59個Python使用技巧,從此你的Python與眾不同(三)

  • 2020 年 2 月 19 日
  • 筆記

20. 隱藏特性 5,帶關鍵字的格式化


更新些的格式化:


21. 隱藏特性 6,切片操作的步長參數

可以用步長 -1 來反轉鏈表:


22. 隱藏特性 7,嵌套列表推導式


列表推導構造permutation: 可以用 itertools.permutations 來實現。


23. 隱藏特性 8,print 重定向輸出到文件

注意打開的模式: 「w+」 而不能 「w」 , 當然 「a」 是可以的

>>> print >> open("somefile", "w+"), "Hello World"

24. 隱藏特性 9, Python3中的元組unpack


25. 隱藏特性 10,pow的第三個參數

其實第三個參數是來求模的: pow(x, y, z) == (x ** y) % z,注意,內置的 pow 和 math.pow 並不是一個函數,後者只接受2個參數。


26. 隱藏特性 11,enumerate還有第二個參數¶

enumerate 很贊,可以給我們索引和序列值的對, 但是它還有第二個參數,這個參數用來: 指明索引的起始值。


27. 隱藏特性 12,顯式的聲明一個集合

在Python 2.7 之後可以這麼聲明一個集合。


28. 隱藏特性 13,用切片來刪除序列的某一段


當然用 del a[1:4] 也是可以的,去除偶數項(偶數索引的):


29. 隱藏特性 14,isinstance可以接收一個元組

這個真的鮮為人知, 我們可以用 isinstance(x, (float, int)) 來判斷 x 是不是數,也就是那個元組裏面是 或 的關係,只要是其中一個的實例就返回 True。


30. 讓關鍵代碼依賴於外部包

雖然Python讓許多編程任務變得容易,但它可能並不總能為緊急的任務提供最佳性能。你可以為緊急的任務使用C、C++或機器語言編寫的外部包,這樣可以提高應用程序的性能。這些包都是不能跨平台的,這意味着你需要根據你正在使用的平台,尋找合適的包。

簡而言之,這個方案放棄了一些應用程序的可移植性,以換取只有在特定主機上直接編程才能獲得的程序性能。這裡有一些你應該考慮加入到你的「性能兵工廠」的包:

  • Cython
  • PyInlne
  • PyPy
  • Pyrex

這些包以不同的方式提高性能。例如,Pyrex能夠擴展Python所能做的事情,例如使用C的數據類型來讓內存任務更加有效或直接。PyInIne讓你在Python應用程序中直接使用C代碼。程序中的內聯代碼單獨編譯,但它在利用C語言所能提供的效率的同時,也讓所有的代碼都在同一個地方。

End.

作者:地球的外星人君

來源:知乎