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好理解一些. 字符串的首字母大写也会更易于理解它们是人名. 汉化示例代码时, 打算就用"电话簿"作变量名.
最新文章
- js与native交互
- Alpha阶段第二次Scrum Meeting
- LINQ的Any方法
- iOS 中CoreData的简单使用
- Linux档案与目彔的基本操作(查看与权限)
- CentOS源列表
- Duilib中系统消息在自己窗口类的使用
- zend studio12.5破解方法
- Response响应请求操作
- javascript typeof 和 constructor比较
- 二分+叉积判断方向 poj 2318 2398
- 线段树练习[单点更新] HDU 2795 Billboard
- jQuery.extend 和 jQuery.fn.extend
- 将String转化为Long,并将Long转化为Date
- Spring 与 mybatis整合 Error parsing Mapper XML. Cause: java.lang.NullPointerException
- Spark笔记——技术点汇总
- CSS垂直居中技巧
- Mpg123源代码详解
- 煎蛋ooxx
- MySql 三大知识点,索引、锁、事务,原理分析
热门文章
- 六、activiti工作流-流程定义查询
- 意料之外,情理之中,Spring.NET 3.0 版本发布-
- python高级-异常(13)
- 使用Keras搭建cnn+rnn, BRNN,DRNN等模型
- [原创]K8Cscan插件之FTP弱口令扫描
- [P5172] Sum
- select实现高并发服务器
- Nginx下关于缓存控制字段cache-control的配置说明 - 运维小结
- 基于FineUIMVC的代码生成器(传统三层)v1.0
- SpringBoot(12) SpringBoot创建非web应用