知乎原链

  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好理解一些. 字符串的首字母大写也会更易于理解它们是人名. 汉化示例代码时, 打算就用"电话簿"作变量名.

最新文章

  1. js与native交互
  2. Alpha阶段第二次Scrum Meeting
  3. LINQ的Any方法
  4. iOS 中CoreData的简单使用
  5. Linux档案与目彔的基本操作(查看与权限)
  6. CentOS源列表
  7. Duilib中系统消息在自己窗口类的使用
  8. zend studio12.5破解方法
  9. Response响应请求操作
  10. javascript typeof 和 constructor比较
  11. 二分+叉积判断方向 poj 2318 2398
  12. 线段树练习[单点更新] HDU 2795 Billboard
  13. jQuery.extend 和 jQuery.fn.extend
  14. 将String转化为Long,并将Long转化为Date
  15. Spring 与 mybatis整合 Error parsing Mapper XML. Cause: java.lang.NullPointerException
  16. Spark笔记——技术点汇总
  17. CSS垂直居中技巧
  18. Mpg123源代码详解
  19. 煎蛋ooxx
  20. MySql 三大知识点,索引、锁、事务,原理分析

热门文章

  1. 六、activiti工作流-流程定义查询
  2. 意料之外,情理之中,Spring.NET 3.0 版本发布-
  3. python高级-异常(13)
  4. 使用Keras搭建cnn+rnn, BRNN,DRNN等模型
  5. [原创]K8Cscan插件之FTP弱口令扫描
  6. [P5172] Sum
  7. select实现高并发服务器
  8. Nginx下关于缓存控制字段cache-control的配置说明 - 运维小结
  9. 基于FineUIMVC的代码生成器(传统三层)v1.0
  10. SpringBoot(12) SpringBoot创建非web应用