一、變量(variable)
1叶雹、概要
要想要說(shuō)變量财饥,首先换吧,要理解折晦,編程是什么。編程沾瓦,就是我們告訴計(jì)算機(jī)满着,你要幫我做什么谦炒。在這個(gè)過(guò)程中,有人风喇、編程語(yǔ)言 宁改、計(jì)算機(jī)三個(gè)角色,因?yàn)橛?jì)算機(jī)是看不懂人類(lèi)的語(yǔ)言的魂莫,而我們也無(wú)法直接地告訴計(jì)算機(jī)要做什么还蹲,
2 、什么是變量
變:變化耙考,核心在與變化 量:衡量谜喊,計(jì)量,表達(dá)是一種狀態(tài)
我們初學(xué)計(jì)算機(jī)語(yǔ)言的時(shí)候倦始,就接觸到了變量的概念斗遏,當(dāng)然,那時(shí)候不可能給出精確的定義鞋邑,很多書(shū)在講的時(shí)候就像大家看到了變量這個(gè)詞大概就能知道它是什么一樣無(wú)需解釋?zhuān)热纭禖語(yǔ)言程序設(shè)計(jì)》里直接就提到了變量的說(shuō)明而沒(méi)有說(shuō)什么是變量诵次。當(dāng)我們帶著這種模糊的感覺(jué)變成“有經(jīng)驗(yàn)”的程序員時(shí),似乎已經(jīng)沒(méi)人在意變量究竟是什么了
? In computer programming, a variable is a storage location and an associated symbolic name (an identifier) which contains some known or unknown quantity or information, a value
變量是一個(gè)存儲(chǔ)位置和一個(gè)關(guān)聯(lián)的符號(hào)名字枚碗,這個(gè)存儲(chǔ)位置包含了一些已知或未知的量或者信息逾一,即值,所有理解變量要從這三個(gè)方面去理解
- 名字(運(yùn)行時(shí)會(huì)變成數(shù)字化的名字肮雨,內(nèi)存地址)
- 存儲(chǔ)位置(某一位置開(kāi)始的一定大小的存儲(chǔ)空間)
- 該存儲(chǔ)位置里內(nèi)容的解釋方式(即類(lèi)型嬉荆,整數(shù)、浮點(diǎn)數(shù)還是字符串酷含?)
二鄙早、變量聲明與賦值
1、變量聲明
在Python中椅亚,變量不需要明確的聲明類(lèi)型來(lái)保留內(nèi)存空間限番。當(dāng)向變量分配值時(shí),Python會(huì)自動(dòng)發(fā)出聲明呀舔。 等號(hào)(
=
)用于為變量賦值弥虐。Python 中的變量不需要聲明。每個(gè)變量在使用前都必須賦值媚赖,變量賦值以后該變量才會(huì)被創(chuàng)建
2霜瘪、示例代碼
- 基礎(chǔ)使用
number1 = 1 #整形 number2 = 1.2 #浮點(diǎn)型 s= '字符串' #字符串類(lèi)型 t = Ture #布爾類(lèi)型
- 多重賦值
#不同的變量賦同一個(gè)值 x=y=z=1
- 多元賦值
#多元賦值 #等號(hào)兩邊是元組 通常元組需要小括號(hào),此處可以忽略 x,y,z = 1,2,'a' #建議加上小括號(hào),增加可讀性 (x,y,z) = (1,2,'a')
- 變量交換
x = 1 y ='3' x,y = y,x
三、變量的內(nèi)存模型
1惧磺、簡(jiǎn)介
雖然
python
的變量使用起來(lái)非常簡(jiǎn)單颖对,但是理解變量的內(nèi)存模型也是非常重要的。
2磨隘、示例代碼
- 示例1
a = "abc" print(a) b = a b = "xyz" print(a) # abc print(b) # xyz
- 說(shuō)明
- 第1行代碼做了3件事情:
1缤底、在內(nèi)存中創(chuàng)建了一個(gè)字符串"abc"
2顾患、在內(nèi)容創(chuàng)建了一個(gè)變量,變量名為a
3个唧、字符串"abc"
在內(nèi)存中的地址賦值給變量a
江解。即可以理解為變量a
指向了字符串"abc"
- 第3行代碼做了2件事情:
1、創(chuàng)建一個(gè)變量徙歼,變量名是b
2犁河、把 變量a
的值賦給變量b
。因?yàn)?a
中是存儲(chǔ)的字符串"abc"
的內(nèi)存地址魄梯,則變量b
存儲(chǔ)的也是字符串"abc"
的內(nèi)存地址呼股。即變量b
也指向了字符串"abc"
- 第5行代碼做了2件事情:
1、在內(nèi)存中創(chuàng)建了一個(gè)字符串"xyz"
2画恰、字符串"xyz"
在內(nèi)存中的地址賦值給變量b
彭谁。則b
中的值被更換為字符串"xyz"
的內(nèi)存地址,b
與 字符串"abc"
則再無(wú)關(guān)系允扇。
3缠局、總結(jié)
計(jì)算機(jī)要處理的數(shù)據(jù)各種各樣,每種數(shù)據(jù)的類(lèi)型是不一樣的考润,比如有的是數(shù)字狭园,有的是字符串等。所以 python 把數(shù)據(jù)分成了多種類(lèi)型糊治。
但是有一點(diǎn)要注意:由于 python 是弱類(lèi)型語(yǔ)言唱矛,變量存儲(chǔ)的值的類(lèi)型并不固定。所以 不應(yīng)該說(shuō)變量的類(lèi)型井辜,而應(yīng)該說(shuō)變量的值的類(lèi)型绎谦。
四、變量命名規(guī)范
- 變量名可以包括字母粥脚、數(shù)字窃肠、下劃線,但是數(shù)字不能做為開(kāi)頭刷允。
name1 = '老王' #合法變量名冤留, 1name='老王' #錯(cuò)誤聲明
- 系統(tǒng)關(guān)鍵字不能做變量名使用
def = 1 #錯(cuò)誤 class = 'werner'#錯(cuò)誤
- 除了下劃線之個(gè),其它符號(hào)不能做為變量名使用
$name='jack' #錯(cuò)誤 user_name='jack' #正確(推薦命名,單詞之間用下劃線隔開(kāi),字母全部小寫(xiě)) userName ="rose" #正確
- Python的變量名是除分大小寫(xiě)的树灶,例如:name和Name就是兩個(gè)變量名纤怒,而非相同變量哦。
- 變量命名盡量起的有意義,而且使用前盡量先賦值
五天通、常量
1泊窘、概念
python中沒(méi)有專(zhuān)門(mén)定義常量的方式,通常使用大寫(xiě)變量名表示。常量是一旦初始化之后就不能修改的固定值州既。例如:數(shù)字"5",字符串"abc"都是常量
通常用全部大寫(xiě)的變量名表示常量
2谜洽、示例代碼
- 示例1
SYS_VERSION=1 ''' 但事實(shí)上 SYS_VERSION 仍然是一個(gè)變量萝映,Python 根本沒(méi)有任何機(jī)制保證 SYS_VERSION不會(huì)被 改變吴叶,所以,用全部大寫(xiě)的變量名表示常量只是一個(gè)習(xí)慣上的用法序臂,如 果你一定要改變變量 SYS_VERSION 的值蚌卤,也沒(méi)人能攔住你 '''
- 示例2
Python中并沒(méi)有提供定義常量的保留字。Python是一門(mén)功能強(qiáng)大的語(yǔ)言奥秆,可以自己定義一個(gè)常量類(lèi)來(lái)實(shí)現(xiàn)常量的功能逊彭。#fileName:const.py class _const: class ConstError(TypeError):pass def __setattr__(self,name,value): if name in self.__dict__: raise self.ConstError("Can't rebind const(%s)"%name) self.__dict__[name] = value import sys sys.modules[__name__] = _const()
import const const.name='老王' const.name='小明'