Think Python 2ed 筆記(二)

Think Python 2ed 中文版網(wǎng)址

第六章 ?有返回值的函數(shù)

1. 返回值:沒有返回值的函數(shù)返回None

2. 增量式開發(fā):增量式開發(fā)的目標,是通過每次只增加和測試少量代碼,來避免長時間的調(diào)試。該函數(shù)的最終版不會在運行時顯示任何東西,僅僅返回一個值。 我們之前寫的print語句在調(diào)試時是很有用的,不過在函數(shù)能夠正確運行之后,你就該刪了它們。 我們稱這樣的代碼為腳手架代碼(scaffolding), 因為它對程序的構(gòu)建很有用,但不是最終產(chǎn)品的一部分。

當你剛開始的時候,最好每次只加入一兩行代碼。 隨著經(jīng)驗見長,你會發(fā)現(xiàn)自己可以編寫、調(diào)試更大的代碼塊了。 無論哪種方式,增量式開發(fā)都能節(jié)省你大量的調(diào)試時間。這種開發(fā)方式的關(guān)鍵是:

從一個能運行的程序開始,并且每次只增加少量改動。無論你何時遇到錯誤,都能夠清楚定位錯誤的源頭。

用臨時變量存儲中間值,這樣你就能顯示并檢查它們。

一旦程序正確運行,你要刪除一些腳手架代碼,或者將多條語句組成復(fù)合表達式,但是前提是不會影響程序的可讀性。

3. 組合:從一個函數(shù)調(diào)用另一個函數(shù)

4. 布爾函數(shù):布爾函數(shù)通常被用于條件語句中

5. 監(jiān)護人、調(diào)試

第七章 迭代

1. while語句:在計算機程序中,重復(fù)也被稱為**迭代(iteration)**

2. break:有些時候循環(huán)執(zhí)行到一半你才知道循環(huán)該結(jié)束了。這種情況下,你可以使用break語句 來跳出循環(huán)。while循環(huán)的這種寫法很常見,因為你可以在循環(huán)的任何地方判斷條件 (而不只是在循環(huán)開始),而且你可以積極地表達終止條件(“當出現(xiàn)這個情況是終止”), 而不是消極地表示(“繼續(xù)運行直到出現(xiàn)這個情況”)。

第八章 字符串

1. 字符串是一個序列:由字符組成的序列

2. len

3. 使用for循環(huán)遍歷

4. 字符串切片

5. 字符串方法:.upper ? ?.find

6. in 運算符:是一個布爾運算符

第十章 列表

1. 列表是一個序列:[? ],一個列表在另一個列表中,稱為**嵌套(nested)列表**,即[...[..]..],嵌套的列表本身還是被看作一個單個元素

2. 列表是可變的:list[0]=333可以索引賦值

3. 遍歷列表:for...in list

4. 列表操作:+運算拼接多個列表;*運算以給定次數(shù)重復(fù)一個列表

5. 列表切片:list[1:2] ? list[:] ??

6. 列表方法:list.append()將元素添加到結(jié)尾;list1.extend(list2)將一個列表添加到目標列表中;list.sort()對列表中元素進行排列

7. 映射、篩選和歸并:sum(list)求和(稱為“歸并”)

8. 剔除元素:list.pop(1)將list中索引為1的值從list中剔除,返回值是該剔除值;del list[1:2]直接刪除;list.remove('b')在不知道'b'的索引的情況下,將該值從list中剔除。

9. 列表和字符串:list = list(string),list()函數(shù)將字符串分割成單獨的字符存入列表中;string.split(分隔符)按照分隔符將string變成列表;'分隔符'.join(list)用分隔符將list組成字符串

10. 對象和值、別名、列表參數(shù)(!!注意理解??!

粗心地使用列表(以及其他可變對象)會導(dǎo)致長時間的調(diào)試。 下面列舉一些常見的陷阱以及避免它們的方法:

大多數(shù)的列表方法會對參數(shù)進行修改,然后返回None。這和字符串方法相反,后者保留原始的字符串并返回一個新的字符串。

如果你習(xí)慣這樣寫字符串代碼:

word=word.strip()

那么你很可能會寫出下面的列表代碼:

t=t.sort()# 錯誤!

因為sort返回None,所以你的下一個對t執(zhí)行的操作很可能會失敗。

在使用list方法和操作符之前,你應(yīng)該仔細閱讀文檔,然后在交互模式下測試。

選擇一種寫法,堅持下去。

列表的一個問題就是有太多方法可以做同樣的事情。 例如,要刪除列表中的一個元素,你可以使用pop、remove、del甚至是切片賦值。

要添加一個元素,你可以使用append方法或者 + 運算符。假設(shè)t是一個列表,x是一個列表元素,以下這些寫法都是正確的:

t.append(x)t=t+[x]t+=[x]

而這些是錯誤的:

t.append([x])# 錯誤!t=t.append(x)# 錯誤!t+[x]# 錯誤!t=t+x# 錯誤!

在交互模式下嘗試每一個例子,保證你明白它們做了什么。 注意只有最后一個會導(dǎo)致運行時錯誤;其他的都是合乎規(guī)范的的,但結(jié)果卻是錯的。

通過創(chuàng)建拷貝來避免別名.

如果你要使用類似sort這樣的方法來修改參數(shù), 但同時有要保留原列表,你可以創(chuàng)建一個拷貝。

>>>t=[3,1,2]>>>t2=t[:]>>>t2.sort()>>>t[3, 1, 2]>>>t2[1, 2, 3]

在這個例子中,你還可以使用內(nèi)置函數(shù)sorted,它將返回一個新的已排序的列表,原列表將保持不變。

>>>t2=sorted(t)>>>t[3, 1, 2]>>>t2[1, 2, 3]

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

相關(guān)閱讀更多精彩內(nèi)容

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