"知乎原鏈" 5. "Data Structures" 中的第一個常式: 大多數讀者也許都認為這些字元串和數字並沒有特別意義. 如果真是這樣, 這個常式還不如用 之類來的一目瞭然, 省去多餘的猜度. 不巧發現"guido"是Python創作者的名字(Guido van Rossum), 就覺得不該這 ...
- Data Structures中的第一個常式:
>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'sape': 4139, 'guido': 4127, 'jack': 4098}
>>> tel['jack']
4098
>>> del tel['sape']
>>> tel['irv'] = 4127
>>> tel
{'guido': 4127, 'irv': 4127, 'jack': 4098}
>>> list(tel.keys())
['irv', 'guido', 'jack']
>>> sorted(tel.keys())
['guido', 'irv', 'jack']
>>> 'guido' in tel
True
>>> 'jack' not in tel
False
大多數讀者也許都認為這些字元串和數字並沒有特別意義. 如果真是這樣, 這個常式還不如用 dict = {'aa': 100, 'bb': 200}
之類來的一目瞭然, 省去多餘的猜度.
不巧發現"guido"是Python創作者的名字(Guido van Rossum), 就覺得不該這麼簡單. 根據python源碼27年前的commit6fc178f46d40aa068a713b509904d343ee55cfa6, 這個教程中的示例代碼是Guido本人編寫的. 因此與他1991年8月附近的經歷應該有關. 接著找到他的簡歷中的:
From 1986 till 1991 I was with the Amoeba project, headed by Sape Mullender
發現Sape也是人名, 基本可以確定是他的同事的名字. 接下去搜到這裡"Open Software Foundation"文末, Sape Mullender的電話是+20-592 4139, 可以印證常式中的變數tel應該指的是當時他們的電話號碼後四位.
接著找到Jack的號碼: +31 20 592 4098
另外還找到Guido用過4127這一號碼, 也許這是CWI那時的一個多人號碼, 如此文, 就能解釋這個代碼示例中還有"irv"也映射到了這個號碼.
原來, 這是一個電話簿. 考慮到Python創造之初, 主要用戶都是Guido的同事, 也是當時他寫教程的讀者, 這個示例代碼對於他們來說是很容易理解的. 但隨著幾十年Python的推廣, 它的含義也就被掩埋了.
英文代碼風格中不提倡縮寫名詞挺合理的. 如果原常式中的變數名是phone或者telephone, 也會比tel好理解一些. 字元串的首字母大寫也會更易於理解它們是人名. 漢化示例代碼時, 打算就用"電話簿"作變數名.