4.Python中什么是變量

在Python中,變量的概念基本上和初中代數(shù)的方程變量是一致的。

例如,對于方程式 y=x*x,x就是變量。當(dāng)x=2時,計算結(jié)果是4,當(dāng)x=5時,計算結(jié)果是25

只是在計算機(jī)程序中,變量不僅可以是數(shù)字,還可以是任意數(shù)據(jù)類型。

在Python程序中,變量是用一個變量名表示,變量名必須是大小寫英文、數(shù)字和下劃線(_)的組合,且不能用數(shù)字開頭,比如:

a = 1

變量a是一個整數(shù)。

t_007 = 'T007'

變量t_007是一個字符串。

在Python中,等號=賦值語句,可以把任意數(shù)據(jù)類型賦值給變量,同一個變量可以反復(fù)賦值,而且可以是不同類型的變量,例如:

a = 123    # a是整數(shù)
print a
a = 'imooc'   # a變?yōu)樽址?print a

這種變量本身類型不固定的語言稱之為動態(tài)語言,與之對應(yīng)的是靜態(tài)語言。

靜態(tài)語言在定義變量時必須指定變量類型,如果賦值的時候類型不匹配,就會報錯。例如Java是靜態(tài)語言,賦值語句如下(// 表示注釋):

int a = 123; // a是整數(shù)類型變量
a = "mooc"; // 錯誤:不能把字符串賦給整型變量

和靜態(tài)語言相比,動態(tài)語言更靈活,就是這個原因。

請不要把賦值語句的等號等同于數(shù)學(xué)的等號。比如下面的代碼:

x = 10
x = x + 2

如果從數(shù)學(xué)上理解x = x + 2那無論如何是不成立的,在程序中,賦值語句先計算右側(cè)的表達(dá)式x + 2,得到結(jié)果12,再賦給變量x。由于x之前的值是10,重新賦值后,x的值變成12。

最后,理解變量在計算機(jī)內(nèi)存中的表示也非常重要。當(dāng)我們寫:a = 'ABC'時,Python解釋器干了兩件事情:

1. 在內(nèi)存中創(chuàng)建了一個'ABC'的字符串;

2. 在內(nèi)存中創(chuàng)建了一個名為a的變量,并把它指向'ABC'。

也可以把一個變量a賦值給另一個變量b,這個操作實際上是把變量b指向變量a所指向的數(shù)據(jù),例如下面的代碼:

a = 'ABC'
b = a
a = 'XYZ'
print b

最后一行打印出變量b的內(nèi)容到底是'ABC'呢還是'XYZ'?如果從數(shù)學(xué)意義上理解,就會錯誤地得出b和a相同,也應(yīng)該是'XYZ',但實際上b的值是'ABC',讓我們一行一行地執(zhí)行代碼,就可以看到到底發(fā)生了什么事:

執(zhí)行a = 'ABC',解釋器創(chuàng)建了字符串 'ABC'和變量 a,并把a(bǔ)指向 'ABC':

執(zhí)行b = a,解釋器創(chuàng)建了變量 b,并把b指向 a 指向的字符串'ABC':

執(zhí)行a = 'XYZ',解釋器創(chuàng)建了字符串'XYZ',并把a(bǔ)的指向改為'XYZ',但b并沒有更改:

所以,最后打印變量b的結(jié)果自然是'ABC'了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容