細數(shù)10個隱藏在Python中的彩蛋
1、使用re.DEBUG查看正則表達式的匹配過程
正則表達式是Python的一大特色,但是調(diào)試起來會很痛苦,很容易得出一個bug。幸運的是,Python可以打印出正則表達式的解析樹,通過re.debug來顯示re.compile的完整過程。
一旦你理解了語法,你就可以發(fā)現(xiàn)你的錯誤。在這里我們可以看到[/font]忘了去除[]
2、enumerate函數(shù)用于遍歷列表中的元素以及它們的下標(biāo)
3、對默認(rèn)實參要多加小心
相反,你應(yīng)該使用一個標(biāo)記值表示“無定義”,來替換“[]”。
4、對于C系的那些更喜歡括號而不是縮進的開發(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、裝飾器
裝飾器實現(xiàn)了在一個函數(shù)中調(diào)用其它函數(shù)或方法來增加功能性,從而修改參數(shù)或結(jié)果等,在函數(shù)定義前加上裝飾器,只需一個“@”符號。
以下示例顯示了一個print_args裝飾器的用法:
7、取參的trick
你可以用*或者**來取出列表或字典作為函數(shù)參數(shù)
8、Exception else語句
使用“else”比在“try”語句中添加多余的代碼更好,因為它避免了意外獲取不被try語句保護的異常…除了聲明之外。
9、嵌套列表推導(dǎo)式和生成器表達式
- [(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
下面讓我們再誦讀一遍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.