1. 程式人生 > >程式碼考古-Python3官方教程字典例程

程式碼考古-Python3官方教程字典例程

知乎原鏈

  1. 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好理解一些. 字串的首字母大寫也會更易於理解它們是人名. 漢化示例程式碼時, 打算就用"電話簿"作變數名.