盤點(diǎn)十大隱藏在Python中的彩蛋
1、使用re.DEBUG查看正則表達(dá)式的匹配過程
正則表達(dá)式是Python的一大特色,但是調(diào)試起來會(huì)很痛苦,很容易得出一個(gè)bug。幸運(yùn)的是,Python可以打印出正則表達(dá)式的解析樹,通過re.debug來顯示re.compile的完整過程。
一旦你理解了語法,你就可以發(fā)現(xiàn)你的錯(cuò)誤。在這里我們可以看到[/font]忘了去除[]
2、enumerate函數(shù)用于遍歷列表中的元素以及它們的下標(biāo)
3、對(duì)默認(rèn)實(shí)參要多加小心
相反,你應(yīng)該使用一個(gè)標(biāo)記值表示“無定義”,來替換“[]”。
4、對(duì)于C系的那些更喜歡括號(hào)而不是縮進(jìn)的開發(fā)者,你只需使用以下一條命令:
- from __future__ import braces
5、切片操作中的tricks
- a = [1,2,3,4,5] >>> a[::2] [1,3,5]
- 特殊的例子是x[::-1],它可以將列表反轉(zhuǎn)
- >>> a[::-1] [5,4,3,2,1]
6、裝飾器
裝飾器實(shí)現(xiàn)了在一個(gè)函數(shù)中調(diào)用其它函數(shù)或方法來增加功能性,從而修改參數(shù)或結(jié)果等,在函數(shù)定義前加上裝飾器,只需一個(gè)“@”符號(hào)。
以下示例顯示了一個(gè)print_args裝飾器的用法:
7、取參的trick
你可以用*或者**來取出列表或字典作為函數(shù)參數(shù)
8、Exception else語句
使用“else”比在“try”語句中添加多余的代碼更好,因?yàn)樗苊饬艘馔猥@取不被try語句保護(hù)的異常…除了聲明之外。
9、嵌套列表推導(dǎo)式和生成器表達(dá)式
[(i,j) for i in range(3) for j in range(i) ]
((i,j) for i in range(4) for j in range(i) )
這些語句可以取代大量的嵌套循環(huán)代碼塊
10、主要句式
import this
下面讓我們?cè)僬b讀一遍Python之禪的要義(The Zen of Python, by Tim Peters):
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.