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

首頁 > 編程 > Python > 正文

跟老齊學(xué)Python之深入變量和引用對象

2020-02-23 05:51:13
字體:
供稿:網(wǎng)友

在《永遠(yuǎn)強(qiáng)大的函數(shù)》那一講中,老齊我已經(jīng)向看官們簡述了一下變量,之后我們就一直在使用變量,每次使用變量,都要有一個(gè)操作,就是賦值。本講再次提及這個(gè)兩個(gè)事情,就是要讓看官對變量和賦值有一個(gè)知其然和知其所以然的認(rèn)識。當(dāng)然,最后能不能達(dá)到此目的,主要看我是不是說的通俗易懂了。如果您沒有明白,就說明我說的還不夠好,可以聯(lián)系我,我再為您效勞。

變量和對象

在《learning python》那本書里面,作者對變量、對象和引用的關(guān)系闡述的非常明了。我這里在很大程度上是受他的啟發(fā)。感謝作者M(jìn)ark Lutz先生的巨著。

應(yīng)用《learning python》中的一個(gè)觀點(diǎn):變量無類型,對象有類型

在python中,如果要使用一個(gè)變量,不需要提前聲明,只需要在用的時(shí)候,給這個(gè)變量賦值即可。這里特別強(qiáng)調(diào),只要用一個(gè)變量,就要給這個(gè)變量賦值。

所以,像這樣是不行的。
代碼如下:
>>> x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined

 反復(fù)提醒:一定要注意看報(bào)錯(cuò)信息。如果光光地寫一個(gè)變量,而沒有賦值,那么python認(rèn)為這個(gè)變量沒有定義。賦值,不僅僅是給一個(gè)非空的值,也可以給一個(gè)空值,如下,都是允許的
代碼如下:
>>> x = 3
>>> lst = []
>>> word = ""
>>> my_dict = {}

 在前面講述中,我提出了一個(gè)類比,就是變量通過一根線,連著對象(具體就可能是一個(gè)int/list等),這個(gè)類比被很多人接受了,算是我老齊的首創(chuàng)呀。那么,如果要用一種嚴(yán)格的語言來描述,變量可以理解為一個(gè)系統(tǒng)表的元素,它擁有過指向?qū)ο蟮拿臻g。太嚴(yán)肅了,不好理解,就理解我那個(gè)類比吧。變量就是存在系統(tǒng)中的一個(gè)東西,這個(gè)東西有一種能力,能夠用一根線與某對象連接,它能夠釣魚。

對象呢?展開想象。在機(jī)器的內(nèi)存中,系統(tǒng)分配一個(gè)空間,這里面就放著所謂的對象,有時(shí)候放數(shù)字,有時(shí)候放字符串。如果放數(shù)字,就是int類型,如果放字符串,就是str類型。

接下來的事情,就是前面說的變量用自己所擁有的能力,把對象和自己連接起來(指針連接對象空間),這就是引用。引用完成,就實(shí)現(xiàn)了賦值。

看到上面的圖了吧,從圖中就比較鮮明的表示了變量和對象的關(guān)系。所以,嚴(yán)格地將,只有放在內(nèi)存空間中的對象(也就是數(shù)據(jù))才有類型,而變量是沒有類型的。這么說如果還沒有徹底明白,就再打一個(gè)比喻:變量就好比釣魚的人,湖水里就好像內(nèi)存,里面有好多魚,有各種各樣的魚,它們就是對象。釣魚的人(變量)的任務(wù)就是用某種方式(魚兒引誘)把自己和魚通過魚線連接起來。那么,魚是有類型的,有鰱魚、鯽魚、帶魚(帶魚也跑到湖水了了,難道是淡水帶魚?呵呵,就這么扯淡吧,別較真),釣魚的人(變量)沒有這種類型,他釣到不同類型的魚。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 桑日县| 青冈县| 岳池县| 宁晋县| 兴安县| 锡林郭勒盟| 萨迦县| 汉源县| 襄垣县| 淮南市| 怀仁县| 嘉定区| 保德县| 屯门区| 游戏| 金秀| 泽普县| 乌什县| 广南县| 正阳县| 仪征市| 中宁县| 莆田市| 东辽县| 昌宁县| 永嘉县| 勃利县| 潮州市| 长武县| 福清市| 云梦县| 隆林| 鹤岗市| 松溪县| 商河县| 阜阳市| 邢台县| 蒲江县| 太湖县| 惠水县| 琼海市|