推薦三篇 Python 好文給喜歡 Python 的人,
分別是 David Goodger 所寫的
Code Like a Pythonista: Idiomatic Python
和 David 所寫的
Python Tips, Tricks, and Hacks
還有 Rob Kinght 所寫的
Python Idioms and Efficiency。
之後我會將從這幾篇學到的技巧陸續列上來。
首先介紹
tuple
的用法,
在 C 語言如果要交換變數 a 跟 b 的值,一般的做法是
tuple
的用法,
在 C 語言如果要交換變數 a 跟 b 的值,一般的做法是
tmp = a;
a = b;
b = tmp;
而在 Python 中只要一行就可以解決了
a, b = b, a
為什麼可以這樣做?原因是 Python 是靠逗號 , 來產生 tuple,
所謂 tuple 指的是由逗號所分隔開的一些值,這些值的型態不一定要一樣,比如
t = 12345, 54321, 'hello!'
如果要建造一個含有兩個 tuple 的變數,則要用圓括號 (,分別把兩個 tuple 括起來,
如
u = (12345, 54321, 'hello!'), (1, 2, 3, 4, 5)
現在回來看
a, b = b, a
等號右邊是一個 tuple (b,a),
如果要把 tuple 的值指定給等號左邊的 name 時,
Python 會做一個 unpacking 的動作,
即把 tuple 的第一個元素的值指定給等號左邊的第一個 name,
依此類推,為什麼我要寫 name 而不寫變數的原因在
這裡。
另一個關於 unpacking 的動作如下
school = [['NSYSU', 'Kaohsiung', '07-5252000'],
['NCKU', 'Tainan', '06-2757575']]
for (name, location, phone) in school:
print name, phone
上述的例子寫起來非常直觀吧,
好像在寫英文似的,
直觀的好處在於程式好寫不容易產生 bug,
一旦 bug 產生,抓蟲的時間搞不好比寫程式的時間還多,這點我深受其害 XD
No comments:
Post a Comment