變量
變量的概念基本上和初中代數(shù)的方程變量是一致的,只是在計(jì)算機(jī)程序中,變量不僅可以是數(shù)字柳骄,還可以是任意數(shù)據(jù)類型。
變量在程序中就是用一個(gè)變量名表示了箕般,變量名必須是大小寫英文耐薯、數(shù)字和_的組合,且不能用數(shù)字開頭丝里。具體規(guī)則如下
變量命名規(guī)則:
- 變量名只能包含字母曲初、數(shù)字與下劃線。變量名可以字母或下劃線打頭丙者,但不能以數(shù)字打頭
- 變量名不能包含空格复斥,但可使用下劃線來分隔其中的單詞
- 不要將Python關(guān)鍵字和函數(shù)名用作變量名,即不要使用Python保留用于特殊用途的單詞,如print
- 變量名應(yīng)既簡(jiǎn)短又具有描述性械媒。
- 慎用小寫字母l和大寫字母O目锭,因?yàn)樗鼈兛赡鼙蝗隋e(cuò)看成1和0
注意:
應(yīng)使用小寫的Python變量名评汰。在變量名中使用大寫字母雖然不會(huì)導(dǎo)致錯(cuò)誤,但避免使用大寫字母是不錯(cuò)的注意痢虹。
在Python中被去,等號(hào)=
是賦值語(yǔ)句,可以把任意數(shù)據(jù)類型賦值給變量奖唯,同一個(gè)變量可以反復(fù)賦值惨缆,而且可以是不同類型的變量
a = 123 # a是整數(shù)
print(a)
a = 'ABC' # a變?yōu)樽址?print(a)
變量本身類型不固定的語(yǔ)言稱之為動(dòng)態(tài)語(yǔ)言,與之對(duì)應(yīng)的是靜態(tài)語(yǔ)言丰捷。
靜態(tài)語(yǔ)言在定義變量時(shí)必須指定變量類型坯墨,如果賦值的時(shí)候類型不匹配,就會(huì)報(bào)錯(cuò)病往。
例如Java是靜態(tài)語(yǔ)言捣染,賦值語(yǔ)句如下:
int a = 123; // a是整數(shù)類型變量
a = "ABC"; // 錯(cuò)誤:不能把字符串賦給整型變量
賦值語(yǔ)句的等號(hào)不同于數(shù)學(xué)的等號(hào)
x = 10
x = x + 2
在程序中,賦值語(yǔ)句先計(jì)算右側(cè)的表達(dá)式x + 2停巷,得到結(jié)果12耍攘,再賦給變量x。由于x之前的值是10畔勤,重新賦值后蕾各,x的值變成12。
理解變量在計(jì)算機(jī)內(nèi)存中的表示非常重要庆揪。當(dāng)我們敲入a = 'ABC
時(shí)式曲,Python解釋器做了兩件事情:
- 在內(nèi)存中創(chuàng)建了一個(gè)'ABC'的字符串
- 在內(nèi)存中創(chuàng)建了一個(gè)名為a的變量,并把它指向'ABC'
也可以把一個(gè)變量a賦值給另一個(gè)變量b嚷硫,這個(gè)操作實(shí)際上是把變量b指向變量a所指向的數(shù)據(jù)
a = 'ABC'
b = a
a = 'XYZ'
print(b)
最后一行打印出變量b的內(nèi)容到底是'ABC'呢還是'XYZ'检访?
如果從數(shù)學(xué)意義上理解,就會(huì)錯(cuò)誤地得出b和a相同仔掸,也應(yīng)該是'XYZ'脆贵,但實(shí)際上b的值是'ABC',一行一行地執(zhí)行代碼起暮,就可以看到到底發(fā)生了什么事:
-
執(zhí)行a = 'ABC'卖氨,解釋器創(chuàng)建了字符串'ABC'和變量a,并把a(bǔ)指向'ABC':
1.png -
執(zhí)行b = a负懦,解釋器創(chuàng)建了變量b筒捺,并把b指向a指向的字符串'ABC':
2.png -
執(zhí)行a = 'XYZ',解釋器創(chuàng)建了字符串'XYZ'纸厉,并把a(bǔ)的指向改為'XYZ'系吭,但b并沒有更改:
3.png
最后打印變量b的結(jié)果自然是'ABC'了。
常量
所謂常量就是不能變的變量颗品,比如常用的數(shù)學(xué)常數(shù)π就是一個(gè)常量肯尺。在Python中沃缘,通常用全部大寫的變量名表示常量:
PI = 3.14159265359
但事實(shí)上PI仍然是一個(gè)變量,Python根本沒有任何機(jī)制保證PI不會(huì)被改變则吟,所以槐臀,用全部大寫的變量名表示常量只是一個(gè)習(xí)慣上的用法,如果一定要改變變量PI的值氓仲,也沒人能攔住你水慨。
參考,部分內(nèi)容來自:
廖雪峰Python教程---數(shù)據(jù)類型與變量