1. 注釋
python中使用'''或者"""進(jìn)行文檔注釋蹄皱,類似于java中的javadoc
2. 下劃線_
_ 常用于臨時(shí)變量的命名
_name 用于表示私有成員
__name用于避免和派生類變量混淆,也表示私有成員
python下劃線的命名規(guī)則
name表示一種特殊的成員,如init
3. 高階函數(shù)
- map()
map()函數(shù)接收兩個(gè)參數(shù)燃辖,一個(gè)是函數(shù)笑撞,一個(gè)是序列脑沿,map將傳入的函數(shù)依次作用到序列的每個(gè)元素悲靴,并把結(jié)果作為新的list返回。 - reduce()
reduce把一個(gè)函數(shù)作用在一個(gè)序列[x1, x2, x3...]上护昧,這個(gè)函數(shù)必須接收兩個(gè)參數(shù)魂迄,reduce把結(jié)果繼續(xù)和序列的下一個(gè)元素做累積計(jì)算 - filter()
和map()類似,filter()也接收一個(gè)函數(shù)和一個(gè)序列惋耙。和map()不同的時(shí)捣炬,filter()把傳入的函數(shù)依次作用于每個(gè)元素,然后根據(jù)返回值是True還是False決定保留還是丟棄該元素怠晴。 - sorted()
排序的核心是比較。
Python內(nèi)置的sorted()函數(shù)就可以對list進(jìn)行排序:
>>> sorted([36, 5, 12, 9, 21])
[5, 9, 12, 21, 36]
sorted()函數(shù)也是一個(gè)高階函數(shù)浴捆,它還可以接收一個(gè)比較函數(shù)來實(shí)現(xiàn)自定義的排序蒜田。比如,如果要倒序排序选泻,我們就可以自定義一個(gè)reversed_cmp函數(shù):
def reversed_cmp(x, y):
if x > y:
return -1
if x < y:
return 1
return 0
-
關(guān)于lambda表達(dá)式的注意點(diǎn)
lambda表達(dá)式中l(wèi)ambda x,y : x+y 和 lambda (x,y): x+y表示的意義不一樣冲粤,前者代表兩個(gè)參數(shù)(x和y),而后者代表一個(gè)參數(shù)(即(x,y)元組)
reduce(lambda x,y : x+y, map(lambda (x, w) : x * w, zip(input_vec, self.weights)), 0.0)
如果沒有注意到這點(diǎn)页眯,這樣寫:
reduce(lambda (x,y) : x+y, map(lambda (x, w) : x * w, zip(input_vec, self.weights)), 0.0)
可能會(huì)出現(xiàn)以下錯(cuò)誤:
TypeError: <lambda>() takes exactly 1 argument (2 given)
這是因?yàn)?x,y)代表一個(gè)參數(shù)梯捕,而實(shí)際上reduce中傳遞了兩個(gè)