国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

圖解Python變量與賦值

2020-01-04 15:31:34
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Python是一門獨(dú)特的語(yǔ)言,與C語(yǔ)言有很大區(qū)別,初學(xué)Python很多萌新表示對(duì)變量與賦值不理解,學(xué)過(guò)C的都知道,給變量賦值時(shí),需要先指定數(shù)據(jù)類型,同時(shí)會(huì)開(kāi)辟一塊內(nèi)存區(qū)域,用于存儲(chǔ)值,例如:

int a = 1;

Python,變量,賦值

a 就是內(nèi)存空間中的一小塊區(qū)域,就像是一個(gè)大房間里面的一個(gè)小盒子,賦值就是把整數(shù)1裝載到盒子里面。

現(xiàn)在給變量a重新賦值

a = 2;

Python,變量,賦值

盒子依然是那個(gè)盒子,也就是說(shuō)內(nèi)存地址沒(méi)有變,只是該段內(nèi)存中的值變了,變成了2。

再來(lái)看:

int b = a;

Python,變量,賦值

當(dāng)把變量a賦值給另外一個(gè)變量b時(shí),相當(dāng)于把值拷貝了一份傳遞給變量b,b是新開(kāi)辟的一段內(nèi)存區(qū)域

而在Python中,“變量”的嚴(yán)格叫法是“名字(name)”,也可以理解為標(biāo)簽,就像我們?nèi)说男彰粯樱志褪菕煸谌松砩系囊粋€(gè)標(biāo)簽。

>>> 10-aTraceback (most recent call last): File "<stdin>", line 1, in <module>NameError: name 'a' is not defined

比如上面這段錯(cuò)誤報(bào)的是name 'a' 沒(méi)有定義,而沒(méi)有說(shuō)成 variable。

在Python中,給變量賦值就是相當(dāng)于給對(duì)象貼標(biāo)簽,就像我們給人取名字一樣,變量本身是沒(méi)有任何意義的,它沒(méi)有類型信息,真正的信息都在對(duì)象身上。

例如:

a = 1

Python,變量,賦值

Python內(nèi)部首先會(huì)分配一段內(nèi)存空間用于創(chuàng)建整數(shù)對(duì)象1,然后給這個(gè)1貼上名為a的標(biāo)簽。

然后執(zhí)行

a=2

Python接著會(huì)在另一塊內(nèi)存區(qū)域創(chuàng)建整數(shù)對(duì)象2,然后把標(biāo)簽a從1身上撕下來(lái)貼在2身上,此時(shí),我們沒(méi)法再通過(guò)a來(lái)得到1這個(gè)值了。

Python,變量,賦值

現(xiàn)在把名字a賦值給另外一個(gè)名字b

b = a

Python,變量,賦值

相當(dāng)于在剛才的2身上又貼了一個(gè)新的標(biāo)簽b,注意,這里和C語(yǔ)言是完全不一樣的,定義b的時(shí)候不需要分配內(nèi)存空間,這樣我們既可以通過(guò)a來(lái)訪問(wèn)2也可以通過(guò)b來(lái)訪問(wèn)2,訪問(wèn)的都是同一個(gè)對(duì)象,就好比我們給寶寶取名時(shí)既有小名也有大名,其實(shí)叫的都是同一個(gè)人。

雖然我們通常在Python中還是用"變量"的叫法(因?yàn)樵诰幊陶Z(yǔ)言中這是一種通用叫法),但是我們需要理解Python中的變量不同于其他語(yǔ)言,變量只是一個(gè)名字。

理解了Python中的變量與賦值后,再來(lái)看函數(shù)的參數(shù)傳遞,如下所示:

>>> def fun_a(a):...   a = a+4...>>> g = 0>>> fun_a(g)>>> g0

全局變量g傳遞給函數(shù)fun_a時(shí),相當(dāng)于函數(shù)中的參數(shù)a也將作為標(biāo)簽貼在0上,隨后a被重新賦值了(a=a+4),相當(dāng)于從0撕下標(biāo)簽a貼到4身上,然后g依然還是0上面的標(biāo)簽。

Python,變量,賦值

再來(lái)看這個(gè)函數(shù),傳遞的是一個(gè)列表對(duì)象

>>> def fun_b(names):...   names[0] = ['x', 'y']...>>> n_list = ['a','b','c']>>> fun_b(n_list)>>>>>> n_list[['x','y'], 'b', 'c']

與前面的步驟還是一樣的,names 和 n_list 都是['a','b','c']上的一個(gè)標(biāo)簽,只是列表中的第0個(gè)元素被重新賦值了,但是names和 n_list 依然都貼在這個(gè)列表對(duì)象身上,雖然 n_list的值更新了,但對(duì)象依然是原來(lái)那個(gè)對(duì)象。就好比張三和小張都是同一個(gè)人,現(xiàn)在給小張換件衣服時(shí),其實(shí)就是給張三換件衣服,人還是那個(gè)人,只是它身上的東西發(fā)生了變化。

Python,變量,賦值

以上內(nèi)容就介紹到這,大家可以繼續(xù)看下面的相關(guān)文章。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到python教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 留坝县| 红原县| 莎车县| 淮北市| 双城市| 偏关县| 龙井市| 岳池县| 黎城县| 额尔古纳市| 永吉县| 靖江市| 子长县| 平凉市| 昭平县| 普兰店市| 尤溪县| 西和县| 永春县| 沁源县| 墨竹工卡县| 曲沃县| 鸡泽县| 施甸县| 罗平县| 武陟县| 天等县| 施秉县| 蒙阴县| 腾冲县| 阿克| 阜平县| 正宁县| 建湖县| 东城区| 政和县| 理塘县| 木里| 道真| 甘德县| 金华市|