調試程序的時候,就吃過這個虧,不知道為何Python使用括號做元祖聲明邊界符,估計是找不到合適的符號了。中括號用來聲明列表,花括號用來聲明字典,元祖號只能用括號來聲明了。有其他語言編程經歷的朋友都清楚括號在其它語言裡都是表示優先級,而Python也可以用來表示優先級,所以也就引發了以下白癡的問題。
# encoding=UTF-8 obj = ('tuple') print obj print type(obj) print len(obj)
執行結果
tuple
<type 'str'>
5
我本來是想聲明只有一個元素的元祖,而Python估計以為你只是聲明一個字符串所以結果以obj變量就變成元祖了。這個錯誤非常隱形,不好調試。
解決方法:末尾加一個逗號
# encoding=UTF-8 obj = ('tuple',) print obj print type(obj) print len(obj)
執行結果
('tuple',)
<type 'tuple'>
1
使用tuple關鍵字:將會得到意外的結果
# encoding=UTF-8 obj = tuple('tuple') print obj print type(obj) print len(obj)
執行結果
('t', 'u', 'p', 'l', 'e')
<type 'tuple'>
5