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好理解一些. 字符串的首字母大写也会更易于理解它们是人名. 汉化示例代码时, 打算就用"电话簿"作变量名.
2018-05-14 代码考古-Python3官方教程字典例程的更多相关文章
- 2018/05/14 03:56:10 [error] 12959#0: *42285845507 client intended to send too large body: 1664288 bytes
Syntax: client_max_body_size size; Default: client_max_body_size 1m; Context: http, server, location ...
- 【caffe】Caffe的Python接口-官方教程-01-learning-Lenet-详细说明(含代码)
01-learning-Lenet, 主要讲的是 如何用python写一个Lenet,以及用来对手写体数据进行分类(Mnist).从此教程可以知道如何用python写prototxt,知道如何单步训练 ...
- 【caffe】Caffe的Python接口-官方教程-00-classification-详细说明(含代码)
00-classification 主要讲的是如何利用caffenet(与Alex-net稍稍不同的模型)对一张图片进行分类(基于imagenet的1000个类别) 先说说教程到底在哪(反正我是找了半 ...
- Python-第三方库requests详解(附requests中文官方教程)
转自http://blog.csdn.net/cyjs1988/article/details/73294774 Python+requests中文官方教程: http://www.python-re ...
- Note | PyTorch官方教程学习笔记
目录 1. 快速入门PYTORCH 1.1. 什么是PyTorch 1.1.1. 基础概念 1.1.2. 与NumPy之间的桥梁 1.2. Autograd: Automatic Differenti ...
- Sentry 后端监控 - 最佳实践(官方教程)
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- Unity性能优化(3)-官方教程Optimizing garbage collection in Unity games翻译
本文是Unity官方教程,性能优化系列的第三篇<Optimizing garbage collection in Unity games>的翻译. 相关文章: Unity性能优化(1)-官 ...
- Unity性能优化(4)-官方教程Optimizing graphics rendering in Unity games翻译
本文是Unity官方教程,性能优化系列的第四篇<Optimizing graphics rendering in Unity games>的翻译. 相关文章: Unity性能优化(1)-官 ...
- Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译
本文是Unity官方教程,性能优化系列的第二篇<Diagnosing performance problems using the Profiler window>的简单翻译. 相关文章: ...
随机推荐
- 移动端点击事件300ms延迟问题解决方案——fastclick.js
移动端点击事件300ms延迟的问题由来已久,如下截图 下面截图来自原文:https://www.jianshu.com/p/6e2b68a93c88 网上关于300ms延迟问题的解决方法,大致分为 3 ...
- python 中几种基本的矩阵操作应用
在图像处理中,python 的矩阵运算经常会用到一些简单的操作,可是,由于好久没用,很多东西还是忘记了,这里做个备忘: #-*-coding:utf-8-*- import numpy as np a ...
- Centos系统通过tar.gz包安装Mysql5.7
1.安装mysql之前需要确保系统中有libaio依赖,使用如下命令: yum search libaio yum install libaio 2.进入centos终端操作界面,使用wget命令下载 ...
- App 性能相关
51Testing系列丛书:性能测试学习笔记之 LoadRunner实战 http://www.51testing.com/html/38/n-3723938.html
- Spring Boot - 获取所有的Bean信息
前言 Spring Boot启动的时候需要加载许多Bean实现最小化配置,本文将尝试找出Spring启动后加载的所有Bean信息: 通过ApplicationContext 去获取所有的Bean 通过 ...
- CentOS7.0小随笔——指令基本操作(Part.B)
一.文件与目录基本操作指令 touch命令 在Linux中,touch指令可以建立一个空文件 但如果创建的文件本身存在(指在同一目录下),则会修改文件最后的访问时间,并不会更改文件内的内容. 例:# ...
- JavaScript和Ajax部分(3)
21. 原生(native)Ajax使用实例 //创建XMLHttpRequest对象的方法 function createXmlHttpRequest(){ if(window.ActiveXObj ...
- jmeter 新手使用教程
jmeter是一款很好的接口和压力测试工具,下载就不说了,去jmeter官网下载即可. 解压缩到本地,然后进入bin文件夹点击jmeter.bat 一.新建一个线程组 线程组内各项配置的含义 二.添加 ...
- Socket网络编程基本介绍
一,socket的起源 socket一词的起源 在组网领域的首次使用是在1970年2月12日发布的文献IETF RFC33中发现的, 撰写者为Stephen Carr.Steve Crocker和Vi ...
- vue的路由映射问题
遇到的问题 今天在项目中遇到了一个问题,明明在Router文件夹下的路由js映射文件中,配置好了,如下: // 生日贺卡 { path: 'birthdayRemind', component: lo ...