最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

習(xí)題 39: 列表的操作

2023-08-24 17:00 作者:薄荷糖鳶  | 我要投稿


你已經(jīng)學(xué)過了列表。在你學(xué)習(xí)“while 循環(huán)”的時(shí)候,你對列表進(jìn)行過“追加 (append)”操作,而且將列表的內(nèi)容打印了出來。

另外你應(yīng)該還在加分習(xí)題里研究過 Python 文檔,看了列表支持的其他操作。這已經(jīng)是一段時(shí)間以前了,所以如果你不記得了的話,就回到本書的前面再復(fù)習(xí)一遍把。 找到了嗎?還記得嗎?很好。那時(shí)候你對一個(gè)列表執(zhí)行了 append 函數(shù)。不過, 你也許還沒有真正明白發(fā)生的事情,所以我們再來看看我們可以對列表進(jìn)行什么樣的操作。?

當(dāng)你看到像 mystuff.append('hello') 這樣的代碼時(shí),你事實(shí)上已經(jīng)在 Python 內(nèi)部激發(fā)了一個(gè)連鎖反應(yīng)。以下是它的工作原理:?

  1. Python 看到你用到了 mystuff ,于是就去找到這個(gè)變量。也許它需要倒著檢查看 你有沒有在哪里用 = 創(chuàng)建過這個(gè)變量,或者檢查它是不是一個(gè)函數(shù)參數(shù),或者看它 是不是一個(gè)全局變量。不管哪種方式,它得先找到 mystuff 這個(gè)變量才行。

  2. 一旦它找到了 mystuff ,就輪到處理句點(diǎn) . (period) 這個(gè)操作符,而且開始查 看 mystuff 內(nèi)部的一些變量了。由于 mystuff 是一個(gè)列表,Python 知道 mystuff 支持一些函數(shù)。

  3. 接下來輪到了處理 append 。Python 會將 “append” 和 mystuff 支持的所有函 數(shù)的名稱一一對比,如果確實(shí)其中有一個(gè)叫 append 的函數(shù),那么 Python 就會去 使用這個(gè)函數(shù)。?

  4. 接下來 Python 看到了括號 ( (parenthesis) 并且意識到, “噢,原來這應(yīng)該是一個(gè)函 數(shù)”,到了這里,它就正常會調(diào)用這個(gè)函數(shù)了,不過這里的函數(shù)還要多一個(gè)參數(shù)才行。?

  5. 這個(gè)額外的參數(shù)其實(shí)是…… mystuff! 我知道,很奇怪是不是?不過這就是 Python 的工作原理,所以還是記住這一點(diǎn),就當(dāng)它是正常的好了。真正發(fā)生的事情其實(shí)是 append(mystuff, 'hello') ,不過你看到的只 是 mystuff.append('hello') 。?

大部分時(shí)候你不需要知道這些細(xì)節(jié),不過如果你看到一個(gè)像這樣的 Python 錯(cuò)誤信息的時(shí)候,上面的細(xì)節(jié)就對你有用了:


就是這個(gè)嗎?嗯,這個(gè)是我在 Python 命令行下展示給你的一點(diǎn)魔法。你還沒有見過 class 不過后面很快就要碰到了?,F(xiàn)在你看到 Python 說 test()takes exactly 1 argument (2 given) (test() 只可以接受 1 個(gè)參 數(shù),實(shí)際上給了兩個(gè))。它意味著 python 把 a.test("hello") 改成了 test(a, "hello"),而有人弄錯(cuò)了,沒有為它添加 a 這個(gè)參數(shù)。 一下子要消化這么多可能有點(diǎn)難度,不過我們將做幾個(gè)練習(xí),讓你頭腦中有一個(gè)深刻的印象。下面的練習(xí)將字符串和列表混在一起,看看你能不能在里邊找出點(diǎn)樂子來:


你應(yīng)該看到的結(jié)果

加分習(xí)題?

  1. 將每一個(gè)被調(diào)用的函數(shù)以上述的方式翻譯成 Python 實(shí)際執(zhí)行的動作。例 如: ' '.join(things) 其實(shí)是 join(' ', things) 。?

  2. ?將這兩種方式翻譯為自然語言。例如,' '.join(things) 可以翻譯成“用 ‘ ‘ 連 接(join) things”,而 join(' ', things) 的意思是“為 ‘ ‘ 和 things 調(diào)用 join 函數(shù)”。這其實(shí)是同一件事情。?

  3. 上網(wǎng)閱讀一些關(guān)于“面向?qū)ο缶幊?Object Oriented Programming)”的資料。暈了吧? 嗯,我以前也是。別擔(dān)心。你將從這本書學(xué)到足夠用的關(guān)于面向?qū)ο缶幊痰幕A(chǔ)知 識,而以后你還可以慢慢學(xué)到更多。

  4. 查一下 Python 中的 “class” 是什么東西。不要閱讀關(guān)于其他語言的 “class” 的用 法,這會讓你更糊涂。?

  5. ?dir(something) 和 something 的 class 有什么關(guān)系??

  6. ?如果你不知道我講的是些什么東西,別擔(dān)心。程序員為了顯得自己聰明,于是就發(fā) 明了 Opject Oriented Programming,簡稱為 OOP,然后他們就開始濫用這個(gè)東西 了。如果你覺得這東西太難,你可以開始學(xué)一下 “函數(shù)編程(functional programming)”。


習(xí)題 39: 列表的操作的評論 (共 條)

分享到微博請遵守國家法律
图片| 临城县| 新泰市| 罗定市| 大宁县| 察隅县| 安远县| 曲靖市| 郸城县| 桂林市| 江达县| 衡山县| 醴陵市| 临城县| 大名县| 富宁县| 广东省| 东安县| 夏邑县| 揭阳市| 舟曲县| 鹤壁市| 扎鲁特旗| 奈曼旗| 瑞丽市| 吴川市| 十堰市| 万全县| 连南| 普陀区| 鄯善县| 蓬安县| 青州市| 灵川县| 古浪县| 密山市| 灵宝市| 嘉义市| 贵溪市| 会宁县| 平昌县|