第5章 條件、循環(huán)和其他語句
教程-第5章 條件、循環(huán)和其他語句.png)
第5章 條件、循環(huán)和其他語句
5.1print和import的更多信息
print語句可以同時(shí)打印多個(gè)表達(dá)式,只需要用逗號(hào)分隔即可,print語句最后添上逗號(hào)表明不換行。若要連接逗號(hào)需使用+符號(hào)
import語句完整用法可以是 from Module import sth as sth
有些模塊比如os.path是分層次安排的(一個(gè)模塊在另一個(gè)模塊里)
5.2賦值魔法
變量賦值時(shí)可以使用序列解包,即將多個(gè)值的序列解開,然后放到變量的序列中,當(dāng)函數(shù)或者方法返回元組(或者其他序列或可迭代對(duì)象)時(shí),這個(gè)特性特別有用
5.3語句塊:縮排的快樂
Python中冒號(hào)用來表示語句塊的開始,縮進(jìn)推薦使用4個(gè)空格
5.4條件和條件語句
elif是else if的縮寫
包含一個(gè)空格的字符串并非空
最好不要比較兩個(gè)不兼容的類型,Python中比較運(yùn)算符是可以連接的,如if(0<a<5):
is運(yùn)算符是同一運(yùn)算符,只有兩個(gè)對(duì)象的引用是一樣時(shí)才為真
字符串和序列按照字母順序進(jìn)行比較
assert斷言語句類似于if,可以在程序中設(shè)置檢查點(diǎn),一旦為假,則產(chǎn)生異常,崩潰
5.5循環(huán)
xrange函數(shù)作用類似于range函數(shù),只是range函數(shù)一次創(chuàng)建整個(gè)序列,而xrange一次值創(chuàng)建一個(gè)數(shù),有時(shí)更高效
Python中迭代序列時(shí),有些函數(shù)很常用,比如itertools模塊中的一些函數(shù),一些迭代技巧:
并行迭代是指可以同時(shí)迭代兩個(gè)列表,如for i in range(len(list1))。內(nèi)建的zip函數(shù)可以用來把兩個(gè)序列壓縮在一起,然后返回一個(gè)元組的列表,如for l1,l2 in zip(list1,list2).zip可以自動(dòng)處理不等長(zhǎng)的序列
編號(hào)迭代是在迭代的同時(shí)獲得當(dāng)前對(duì)象的索引,內(nèi)建enumerate函數(shù)可以做到:for index,string in enumerate(strings)
翻轉(zhuǎn)和排序迭代,即sorted和reversed函數(shù),前者返回一個(gè)列表,后者返回一個(gè)可迭代對(duì)象
5.6列表推導(dǎo)式:輕量級(jí)微循環(huán)
列表推導(dǎo)式是利用其它列表創(chuàng)建新列表的一種方法,基本方式如下:[x*x for x in range(10) if x%3=0]a=[(x,y) for x in range(10) for y in range(5) if x%2==0 if y%2!=0]
5.7三人行
pass語句和注釋聯(lián)合使用的替代方案是插入字符串,對(duì)于那些沒有完成的函數(shù)和類來說這個(gè)方法很有用
del語句用來刪除一個(gè)變量對(duì)內(nèi)存的引用,但是這個(gè)引用并沒有顯式刪除,由Python解釋器負(fù)責(zé)內(nèi)存的回收
exec胡用于執(zhí)行Python語句,eval能計(jì)算Python表達(dá)式,但這樣做可能留下安全漏洞。均可以使用命名空間。如:scope={};exec 'sqrt=1' in scope