一:連續(xù)比較
Python 支持連續(xù)比較,'a' < 'b' < 'c' 相當(dāng)于 'a' < 'b' and 'b' < 'c',其本質(zhì)是字符 ASCII 碼的大小比較,該判斷式結(jié)果為 True。
二:異常捕捉
如果try中沒(méi)有異常,那么except部分將跳過(guò),執(zhí)行else中的語(yǔ)句。(前提是try里沒(méi)有返回值)
finally是無(wú)論是否有異常,最后都要做的一些事情。(無(wú)論try里是否有返回值)
三:邏輯運(yùn)算符
四:布爾測(cè)試
下列對(duì)象的布爾值都是False:
NONE
所有的值為零的數(shù): 0(整型) 0.0(浮點(diǎn)型) 0L(長(zhǎng)整型) 0.0+0.0j(復(fù)數(shù))
(空字符串) [](空列表) ()(空元組) {}(空字典)
五:模塊名
由于每個(gè)python模塊(python文件)都包含內(nèi)置的變量name,當(dāng)運(yùn)行模塊被執(zhí)行的時(shí)候,name等于文件名(包含了后綴.py)。如果import到其他模塊中,則name等于模塊名稱(不包含后綴.py)。而“main”等于當(dāng)前執(zhí)行文件的名稱(包含了后綴.py)。所以當(dāng)模塊被直接執(zhí)行時(shí),name == 'main'結(jié)果為真;而當(dāng)模塊被import到其他模塊中時(shí),name == 'main'結(jié)果為假,就是不調(diào)用對(duì)應(yīng)的方法。
六:字典的鍵
使用dict需要牢記的第一條就是dict的key必須是不可變對(duì)象。這是因?yàn)閐ict根據(jù)key來(lái)計(jì)算value的存儲(chǔ)位置,如果每次計(jì)算相同的key得出的結(jié)果不同,那dict內(nèi)部就完全混亂了。這個(gè)通過(guò)key計(jì)算位置的算法稱為哈希算法(Hash)。
七:jupyter notebook自動(dòng)重新加載發(fā)生改動(dòng)的模塊
> %load_ext autoreload
>
> %autoreload 2
>
> from foo import some_function
>
> some_function()
>
> 輸出: 42
>
> # 打開(kāi)foo.py,編輯some_function()函數(shù)讓其輸出43
>
> some_function()
>
> 輸出:43
八:?jiǎn)涡备芎碗p斜杠運(yùn)算符的區(qū)別
在python 3.x版本中
單斜杠(/)表示除法,且不管除數(shù)和被除數(shù)是不是整數(shù),最后結(jié)果都是float類
雙斜杠(//)表示地板除,即先做除法(/),然后向下取整(floor)。至少有一方是float型時(shí),結(jié)果為float型;兩個(gè)數(shù)都是int型時(shí),結(jié)果為int型
九:在列表、元組、字典前加星號(hào)
列表和元組前面加一個(gè)星號(hào)的作用是:將其解開(kāi)成兩個(gè)獨(dú)立的參數(shù),傳入函數(shù),
字典前面加兩個(gè)星號(hào):是將字典解開(kāi)成獨(dú)立的元素作為形參。
def add(a, b):
return a+b
data = [4,3]
print add(*data)
#equals to print add(4, 3)
data = {'a' : 4, 'b' : 3}
print add(**data)
#equals to print add(4, 3)
十:在創(chuàng)建類型的時(shí)候定義了call()方法,這個(gè)類型就像函數(shù)一樣是可調(diào)用的
>>>class Reader():
def __init__(self,name,nationality):
self.name = name
self.nationality = nationality
def __call__(self):
print('Reader: %s Nationality: %s' % (self.name, self.nationality))
>>>r = Reader('Annie','Chinese')
>>>r()
Reader:Annie Nationality: Chinese