国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 固始县| 固安县| 青铜峡市| 台南县| 金堂县| 平江县| 易门县| 逊克县| 通江县| 双江| 驻马店市| 孟津县| 兴安县| 金门县| 呼和浩特市| 库伦旗| 都昌县| 阿合奇县| 城固县| 泸溪县| 政和县| 陇川县| 邯郸市| 株洲县| 宁陵县| 固镇县| 清镇市| 漠河县| 南澳县| 湖南省| 两当县| 郴州市| 定边县| 洛川县| 绥中县| 镇坪县| 馆陶县| 秭归县| 新野县| 营口市| 瑞丽市|