列舉
不要這麼做:
1 2 3 4 |
i = 0 for item in iterable: print i, item i += 1 |
而是這樣:
1 2 |
for i, item in enumerate(iterable): print i, item |
Enumerate可以接受第二個引數,例如:
1 2 3 4 5 |
>>> list(enumerate('abc')) [(0, 'a'), (1, 'b'), (2, 'c')] >>> list(enumerate('abc', 1)) [(1, 'a'), (2, 'b'), (3, 'c')] |
字典/集合 解析
你可能知道列表解析,但不知道字典/集合解析。字典/集合解析簡單而且高效,例如:
1 2 3 |
my_dict = {i: i * i for i in xrange(100)} my_set = {i * 15 for i in xrange(100)} # There is only a difference of ':' in both |
強制浮點數除法
如果我們除以一個整數,即使結果是一個浮點數,Python(2) 依舊會給我們一個整數。為了規避這個問題,我們需要這樣做:
1 |
result = 1.0/2 |
但是現在有一種別的方法可以解決這個問題,甚至在之前我都沒有意識到有這種方法存在。你可以進行如下操作:
1 2 3 4 |
from __future__ import division result = 1/2 # print(result) # 0.5 |
需要注意的是這個竅門只適用於Python 2。在Python 3 中就不需要進行import 操作了,因為它已經預設進行import了。
簡單的伺服器
你想快速簡單的分享目錄下的檔案嗎?可以這樣做:
1 2 3 4 5 |
# Python2 python -m SimpleHTTPServer # Python 3 python3 -m http.server |
這回啟動一個伺服器
簡單的伺服器
我們都知道eval
,但也許並不是所有人都知道literal_eval
.可以這麼做:
1 2 |
import ast my_list = ast.literal_eval(expr) |
而不是這樣:
1 2 |
expr = "[1, 2, 3]" my_list = eval(expr) |
我相信對於大多數人來說這種形式是第一次看見,但是實際上這個在Python中已經存在很長時間了。
分析指令碼
按下面的方式執行指令碼,可以很簡單的對其進行分析:
1 |
python -m cProfile my_script.py |
物件自檢
在Python中,可以通過dir()來檢查物件,例如:
1 2 3 4 5 6 |
>>> foo = [1, 2, 3, 4] >>> dir(foo) ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', ... , 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] |
除錯指令碼
你可以使用pdb
模組在指令碼中設定斷點來除錯指令碼,就像這樣:
1 2 |
import pdb pdb.set_trace() |
你可以在指令碼的任何地方加入pdb.set_trace()
,該函式會在那個位置設定一個斷點。超級方便。你應該多閱讀pdb 函式的相關內容,因為在它裡面還有很多鮮為人知的功能。
簡化if結構
如果必須檢查一些值,可以用
1 |
if n in [1,4,5,6]: |
而不是用複雜的if結構:
1 |
if n==1 or n==4 or n==5 or n==6: |
字串/數列 逆序
下面的方式可以快速反轉一個列表:
1 2 3 4 5 6 7 8 |
>>> a = [1,2,3,4] >>> a[::-1] [4, 3, 2, 1] # This creates a new reversed list. # If you want to reverse a list in place you can do: a.reverse() |
這種方式同樣適用於字串:
1 2 3 |
>>> foo = "yasoob" >>> foo[::-1] 'boosay' |
優雅地列印
下面的方式可以用優雅的方式列印字典和列表:
1 2 |
from pprint import pprint pprint(my_dict) |
這用於字典列印是非常高效的,如果你想從檔案中快速優雅的列印出json,可以這樣做:
1 |
cat file.json | python -m json.tools |
三元運算
三元運算是if-else 語句的快捷操作,也被稱為條件運算。這裡有幾個例子可以供你參考:
1 2 3 |
[on_true] if [expression] else [on_false] x, y = 50, 25 small = x if x |