Python 的那些隱藏特性

發表於2015-02-11

注:這裡忽略了生成器,裝飾器,交換變數等熟知技巧

1. 函式引數unpack

老生常談的了:

2. 鏈式比較操作符

3. 注意函式的預設引數

更安全的做法:

4. 字典有個get()方法

dct.get(key[,default_value]), 當字典dct中找不到key時,get就會返回default_value

5. 帶關鍵字的格式化

更新些的格式化:

快有些模板引擎的味道了:)

6. for…else 語法

else語句塊會在迴圈結束後執行,除非在迴圈塊中執行break

7. dict 的特殊方法__missing__

Python 2.5之後引入的。當查詢不到key的時候,會執行這個方法。

這很像collections.defaultdict不是嗎?

8. 切片操作的步長引數

還能用步長-1來反轉連結串列:

9.另一種字串連線

連線多行:

10. Python直譯器中的”_”

_即Python直譯器上一次返回的值

11. Python 描述器

Python描述器是Python 中很魔幻的東西,方法等都是描述器。不再舉例

12. Zen

13. 巢狀列表推導式

14. try/except/else

15. print 重定向輸出到檔案

注意開啟的模式:"w+"而不能"w", 當然"a"是可以的

16. 省略號

在Python3中你可以直接使用省略號這個文法:

Python2 中呢?

17. Python3中的元組unpack

真的但願Python2也這樣:

當然也可以取出最後一個:

18. pow()還有第三個引數

我們都知道內建函式pow,pow(x,y)即x**y

但是它還可以有第三個引數:

其實第三個引數是來求模的:pow(x,y,z)?==?(x**y)?%z

注意,內建的pow和math.pow並不是一個函式,後者只接受2個引數

19. enumerate還有第二個引數

enumerate很贊,可以給我們索引和序列值的對, 但是它還有第二個引數:

這個引數用來: 指明索引的起始值

20. 顯式的宣告一個集合

新建一個集合,我們會:

在Python 2.7 之後可以這麼寫了:

21. 用切片來刪除序列的某一段

當然用dela[1:4]也是可以的

去除偶數項(偶數索引的):

22. isinstance可以接收一個元組

這個真的鮮為人知, 我們可以用isinstance(x,(float,int))來判斷x是不是數:

那麼對於第三個測試,你把str加入元組就可以看到這是怎麼回事了:

也就是那個元組裡面是或的關係,只要是其中一個的例項就返回True

23. 字典裡的無限遞迴

當然你可以製作一個連結串列中的無限迴圈:

真心不知道有什麼用,不過蠻好玩的不是嗎

24. Python可以認識Unicode中的數字

所以說,Python很贊:

不只是ASCII字串的可以認出來,連Unicode的也可以。

25. 不能訪問到的屬性

回答這個答案的人太壞了:)

不過,能用setattr設定屬性,就可以用getattr取出

26. 尾語

歡迎fork, 追加內容。

相關文章