2018-05-14 代码考古-Python3官方教程字典例程
- 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好理解一些. 字符串的首字母大写也会更易于理解它们是人名. 汉化示例代码时, 打算就用"电话簿"作变量名.
下一篇: 国内首款高端游戏手机亮相