Python早期设计与开发:从ABC到Python
本系列文章译自Python之父 Guido van Rossum 的系列博客“The History of Python”。这个博客系列对我们理解Python及其演变很有帮助,经Guido同意,在这里翻译推荐给大家,希望大家喜欢,也请大家多多指教!
1. 缩进风格
Python最初的、也是最主要的影响来自ABC,一门由 CWI 设计于上世纪80年代初的编程语言(译注:见之前的博文)。ABC最初的目标是替代BASIC,成为一门教学语言,并成为针对个人用户的编程语言与编程环境。ABC的设计,立足于对用户编程行为的分析,之后根据用户测试的情况,发布了几个迭代版本。当时,我主要负责与集成编程环境(IDE)的对接。
(相关资料图)
Python对缩进的使用,就是直接借鉴于ABC。不过,使用缩进并不是ABC的发明——经由 Donald Knuth 的倡导,缩进在那时已经是一种众所周知的编程风格了(occam语言也使用了缩进风格)。
ABC团队创新的地方,是用冒号来区分缩进逻辑块的前导语句。最初,ABC也没有引入冒号,结果在用户测试中发现,编程初学者很难区分各种缩进。引入冒号之后,整个结构就清楚多了:冒号好像把前导语句与其后的逻辑块完美组合在了一起。
2. 主要数据类型
Python的主要数据类型也都来自ABC,只是作了一些调整。
ABC中的列表实际上是多重集,通过B树结构,保持列表中的数据是有序的。而ABC中的表,键值也是有序的。我认为这两种数据结构都不适合表现一些非常常用的数据,比如从文件中读取的文本行。(在ABC中,读取文本行必须使用表结构,并把行数作为键值,但这样的话,插入和删除行就会变得很复杂。)因此,我把列表改为无序的,并可以自由插入和删除,从而方便用户控制其序列。有需要时,也可以调用方法进行排序。
同时,我也用哈希表替代了ABC中的有序表。相对于B树来说,我认为哈希表更快,也更容易实现。理论上说,B树结构中的许多操作,在空间和时间复杂度上都是线性的,但在实际应用中,实现起来很困难,因为B树的算法本身比较复杂。而当表的规模比较小时,B树的效率更低。
Python 元组的封装与拆包操作其实是从ABC照搬过来的。不过元组内部实际上就是一个数组,因此我增加了索引和切片操作。
因为给元组增加了类似于数组的接口,我不得不考虑空元组或只有一个元素的元组要怎么表达的问题。作为从ABC借鉴过来的原则之一:任何一种数据类型,在打印、或者转换为字符串的时候,都应该让解析器能正常解析。同时我又得把只有一个元素的元组和带括号的参数区分开来。因此只得采取一种丑陋但务实的方式:如果元组只有一个元素,需要在元素后加一个逗号,如果是空元组,就用“()”表示。事实上,元组一般是不需要括号的,只有在空元组的时候必须用括号——我感觉如果用完全的“空(nothing)”表示空元组,可能很容易与大家的其它语法错误混淆起来。
Python 中的字符串和 ABC 中的字符串一样,都是不可变类型,但用了不同的符号,索引也改为从0开始。主要是因为 Python 中已经有三种可索引类型:列表、元组和字符串,它们的索引方式还是要统一为好,这样,一些核心方法才能保持一致,比如获取长度(len(s))、通过索引取值(s[i])、切片(s[i:j]),以及迭代(for i in s)等。
3. 数字类型
Python 和 ABC 最大的不同在数字类型。ABC 在运行时有两种数字类型,一种是精确数字,即任意精度有理数,一种是约略数字,即指定范围的二进制浮点数。这个有理数实在是槽点满满。(吐槽:有次我用ABC计算要交的税,公式很简单,但几个数字就运算了很久。研究了下发现,它居然算到了小数点后几千位,最后的结果却只需要小数点后一两位。)因此,在 Python 中,我使用了传统的数字模型,即系统位数的整型,以及系统位数的二进制浮点型,底层实现上,直接用的 C 语言中的长整数(long)和双精度浮点数(double)。
考虑到任意精度数字还是有很多重要的应用场景,我在 Python 中增加了一种大数类型,叫做长整型(long)。数年前我给 ABC 写过类似的实现(ABC最初的实现,也是我在ABC团队做的第一件事之一,底层用的是十进制表示方式),因此,这里就直接使用了现成的代码。
虽然我在 Python 中增加了大数类型,但还是应该强调,大多数场景中并不需要用到它。从我自己及我在CWI的同事所写的 Python 代码来看,大多数程序的运算时间中,很大部分都是整数运算,最常见的是计算内存索引。因此,我想,绝大多数情况下应该使用系统位数整型,大数类型只在少数情况下会用到,比如严谨的“数学”运算,或者以“分”为单位来计算美国国债的时候。
标签:
相关推荐:
精彩放送:
- []每日速讯:倩女幽魂2哪个区人最多?老区人都多?
- []TinySH备份工具安装教程及操作步骤
- []当前播报:如何在微信小程序上开发一个蚂蚁森林和蚂蚁庄园结合体?开发方法步骤
- []100幅出名的视觉欺骗图片 你从图中看到了什么?
- []渲染农场——分布式并行集群计算系统
- []对话华住联席COO沈怡均:未来3-4年,全季酒店要做到3000家
- []驾驶员清醒和疲劳状态时 如何提取脑电信号特征?
- []C语言输出a大于100,C语言:ALGOL代码实现“水仙花数”
- []天天动态:OpenCV学习笔记 再谈OpenCV数据结构Mat详解
- []环球微资讯!oracle行转列是什么?动态行转不定列
- []简讯:外汇交易提醒:元旦假期结束,美元兑日元剧烈震荡迎接超级周
- []世界新资讯:张贤胜和泫雅恋爱过吗?到底是不是情侣关系?
- []【世界聚看点】有功功率和无功功率的区别是什么?交流有功功率、无功功率、视在功率计算
- []每日快看:一公斤黄金多少钱?一公斤黄金合多少人民币?
- []【环球报资讯】华为matebook和荣耀magicbook区别是什么?两者的区别介绍
- []Win8如何开启802.1x网络认证?开启802.1x网络认证方法
- []当前通讯!无锡火车站你知道多少?无锡火车站详情介绍
- []全球速讯:不同类型的网页设计有哪些风格?网页设计简单介绍
- []世界新动态:SQL Server developer和enterprise有什么区别?各个版本的定义
- []网盘哪个好?网盘性能推荐
- []天天亮点!数据透视表是什么?excel中数据透视表的基本概念
- []全球观热点:改装房车违法吗怎么处罚?改装房车违法吗?
- []编辑好正文和引用内容的文本如何添加?
- []什么是Config?Config的详情介绍
- []世界快看:veet脱毛膏使用前需要水吗?veet脱毛膏怎么用?
- []office怎么卸载?office卸载步骤
- []当前快报:安卓手机如何设置便携式WLAN热点?设置教程
- []当前聚焦:crt是什么意思?CRT与WINDOWS的关系
- []全球最新:贵州电视台养生节目帮助睡眠 贵州电视台养生节目是什么?
- []今日讯!金山打字通有哪些好玩的游戏?金山打字通生死时速游戏介绍
- []【新视野】百度进军日本市场 已成日本第四大独立搜索引擎
- []讯息:洗白色鞋子有什么妙招?洗白色鞋子小妙招
- []全球实时:麦肯锡发布2021中国消费者报告:全球增长新引擎
- []当前简讯:未能连接驱动人生服务器怎么办?驱动人生5wifi共享失败解决方法
- []有没有MAC的WPS?金山公司明年将有全平台的WPS
- []天天快消息!四个圈是什么车?奥迪车标的来历
- []win10系统显示不了桌面怎么回事?解决步骤如下
- []全球短讯!1000米长跑技巧有哪些?1000米的长跑技巧
- []环球快报:华为g9怎么样?华为g9参数配置评测
- []世界快看:cf防沉迷验证是什么?cf防沉迷身份证
- []全球聚焦:如何在mac系统中使用苹果的键盘?移动文件的快捷键是什么?
- []世界观天下!手机卡怎么剪成最小?手机卡裁剪技巧
- []推荐12本好看的高干文 每本都值得看三次
- []观焦点:文字处理软件word2003 完整视频教程系列(一)
- []dr.dre耳机怎么样?dr.dre耳机简介及价格
- []微信聊天记录怎么导出?教你两种方法
- []世界视讯!柠檬片泡水有什么副作用?柠檬片泡水的功效和副作用
- []qq邮箱163登不了怎么办?qq邮箱163登录方法
- []【聚看点】串口服务器协议 TCPserver--TCPclient模式设置方法
- []当前要闻:卖垃圾袋的“财迷”小子 37亿美元身家跻身前400强
- []环球百事通!d link路由器怎么设置ip段?d link路由器设置方法
- []最资讯丨萧景鸿的前女友是谁?萧景鸿的前女友叫什么名字?
- []全球关注:如何玩转Lua内存回收?Lua的内存监测和回收
- []动态:如何快速查询顺心捷达物流?查询方法步骤
- []每日热议!什么是沙盒游戏?沙盒类游戏哪十大排行?
- []快看:自动驾驶之路面缺陷检测 路面缺陷检测算法
- []世界看热讯:secure是什么意思?secure的用法
- []全球看热讯:重返末日剧场怎么飞上房顶?cf末日剧场介绍
- []今日讯!excel/word如何快速输入当前的时间和日期?输入方法技巧
- []消息!实施运维企业面试题有哪些?实施运维企业面试题及答案
- []typec数据线是什么?Type-C数据线有哪些优势?
- []天天头条:win7电脑怎么修改ip地址?win7电脑修改ip地址修改方法
- []利勃海尔冰箱怎么样?利勃海尔冰箱有哪些优势?
- []苹果care是什么意思?苹果care的含义
- []世界即时看!荣耀MagicBook14用什么处理器?MagicBook14处理器介绍
- []【当前独家】适合教师节的歌曲简谱有哪些?适合教师节的歌曲
- []天天快资讯:java-version升级的JDK 到底是怎么回事?
- []环球微资讯!Trinity是什么?AMDTrinityAPU最新发布
- []每日关注!北陈南萧接下来是什么朝代?北陈南萧是哪个朝代?
- []当前热讯:网上阅卷系统是什么?网上阅卷系统简要概述
- []世界聚焦:n95手机怎么样?n95手机详细测评
- []浙江富浙资本管理挂牌赞成集团12.8%股权 底价9902.43万元
- []全球微资讯!美的置业2022年录得合同销售金额792.4亿元 已售销售面积631.6万平
- []1月3日财经早餐:美元在新年伊始上涨,但市场情绪疲软
- []热头条丨大家千万不要领失业金补助,失业金可以领
- []为什么建议不要失业补助金,有以下三点原因
- []保险交了6年不想交了能退吗 交了6年不想交了保险能退吗
- []世界播报:医保卡超过3000元就可以取现,是否可以取现在于当地政策
- []世界焦点!公积金如何计算,公积金封存的意思
- []世界观点:国美零售公布债转股方案 控股股东黄光裕持股比例将降至19.33%
- []环球最资讯丨京东物流授出523.86万股奖励股份 占总股本0.08%
- []鱼跃医疗:公司若有相关计划会及时履行相应的审议程序及信息披露义务
- []热消息:中百集团关闭武汉、荆州等地5家大卖场 预计产生损失2500万元
- []全球热议:际华集团:拟转让子公司陕西际华园 交易总金额不超过8.3亿元
- []天天微速讯:由于规划原因 黑牡丹常州“两馆两中心”PPP项目提前终止
- []中铁装配全资子公司收到桂林住宅项目中标通知书 中标金额约2亿元
- []世界实时:际华集团:终止“际华园西安项目”并将结余资金永久补充流动资金
- []今日热门!华脉泰科冲刺科创板上市:持续亏损,实控人周坚曾是神经科医生
- []【全球快播报】广州将发放三轮共计2000万元消费券 涉1700多家文旅企业商家
- []热点在线丨终于,全国开始抢救二手房了?
- []1月1日起 河南省全面实施“交房即交证”
- []携程:元旦假期近六成用户跨省游 跨境机票预订量同比增长145%
- []视讯!绍兴:继续推进房屋拆改 房票使用范围扩大至二手房
- []天天新消息丨香港公布1至3月卖地计划 连同私人重建项目提供3120伙单位
- []头条:长春:“三孩家庭”公积金贷款额度可提高20万元
- []【时快讯】上海徐家汇中心T2塔楼核心筒封顶 预计2024年竣工交付
- []北京:租住保障性租赁房的家庭可以申请提取住房公积金
- []【独家焦点】*ST宜康:获实控人捐赠颂阳实业100%股权 拓展在医疗设备领域业务
- []今日热文:存量房贷利率“降息”,快来算算你月供能省多少
- []【新要闻】赛分科技冲刺科创板上市:拟募资8亿元,复星、高瓴为股东
- 环球报道:2023年房地产行业怎么走?王惠敏、丁祖昱等给出预测
- 热点追踪 | 小心投资中的空中楼阁
- 碧水源:公司不知道股东的相关计划,公司如有达到披露标准的事项将会及时公告
- 宁德时代申请冻结广汽菲克财产
- 世界观热点:177亿!锂电巨头大项目黄了?
- 简讯:200MW/400MWh!国电投宁夏盐池共享储能电站设备招标!
- 去哪儿:元旦成为疫情恢复后首个长线游高峰 三成用户选择连住3天以上
- 焦点速讯:100亿级锂电池材料项目投产!
- 环球热讯:同程旅行盘点2023元旦出行数据,机票酒店“量价齐升”
- 热门看点:52亿!卓能新能源10GWh新型动力电池及储能系统项目开工
- 天天日报丨飞猪:元旦跨省跨市游订单占比近8成,上海、成都、北京、三亚走热
- 支持“新能源+储能”一体化模式开发
- 世界新动态:马蜂窝元旦旅游数据报告:“长途游”复苏明显,41%的游客选择自驾出行
- 焦点速讯:公积金网上基数调整流程,有以下四步
- 世界最资讯丨赛目科技冲刺港交所上市:毛利率持续走低,胡大林为董事长
- 全球最新:新华保险交20年能拿回本金吗,分以下三种情况
- 天天即时看!税优健康险有哪几家公司有,买保险需要注意什么
- 【报资讯】网上提取住房公积金流程,有以下四步
- 交强险2000赔付流程,有以下四步
- 热点评!养老账户余额有什么用 养老保险余额可以干什么
- 环球关注:传世经典-『老铺黄金』经典巡展 北京SKP首展启幕
- 当前观察:全国最强区,大跌700万!
- 2023年救市,又有新玩法了!
- 全球最资讯丨2022年中国房地产企业新增货值TOP100排行榜
- 天天播报:关于2023年,楼市的6大预判
- 天天热资讯!从一房难求到降价甩卖,美国楼市“寒潮”来临?
- 环球要闻:北京:1月1日起,租住保障性租赁房可提取公积金
- 环球快播:我爱我家谢勇新年致辞:实行稳健发展战略,推动数字化升级
- 热问|共同购买的房屋被男友擅自出售该咋办?
- 潍柴动力:如有应披露事项,公司将根据监管要求及时予以披露
- 世界讯息:绿城新年致辞:去年交付面积超1千万平米,今年优化各项经营指标
- 84.7亿!河北邢台抽水蓄能电站项目开工
- 每日快播:6MW/36MWh!业内最大全钒液流电池用户侧储能电站并网
- 焦点热讯:80亿元!甘肃岷县禾驮抽水蓄能电站项目成功签约
- 天天快消息!官方解读 | 《江西电力调频辅助服务市场运营规则》发布
- 10MW/20MWh!浙江海宁首个大型独立储能电站一期投运
- 全球观天下!信息量巨大!西藏电力辅助服务与并网运行管理实施细则印发!
- 世界资讯:能环宝一周能源说:我国最大超深油田年产油气突破300万吨
- 全球速读:又一家光伏公司启动A股IPO辅导
- 公积金基数可以随意调整吗 不可以
- 公积金线下怎么提取 简单三步轻松提取
- 公积金双边是什么意思 公积金汇缴总金额
- 环球今日报丨你好,2023!观点新媒体祝您元旦快乐
- 每日关注!公积金对冲和不对冲的区别 公积金对冲还贷办理方法
- 世界热消息:企业年金可以一次性取出来吗 可以
- 【环球速看料】调整限购区域、认贷不认房……郑州出台楼市“12条”
- 今日热文:华彬集团喜忧参半:红牛商标诉讼扳回一局,2022年业绩战报下滑
- 全球快消息!2022“非典型名城”盘点——那些你想去,却还没出发的城市
- 全球通讯!2022年千亿房企仅20家,易居CEO丁祖昱:明年上半年压力依然会很大
- 焦点热门:房企“排头兵”宣布一个重磅消息
- 【环球新要闻】现在深圳二手房的挂牌量,吓了我一跳
- 当前动态:跌回6年前!这类小区,正在疯狂被践踏!
- 当前快讯:忍住没卖房的,要赢麻了?
- 【世界报资讯】百强房企拿地金额近“腰斩”,谁逆势大幅扩储?
- 环球滚动:对话孙坚:以酒店为圆心,构建酒店+本地生活新生态
- 天天热讯:万里马:公司目前未获得相关订单
- 信息:保利发展发布125亿元定增预案 投向14个项目
- 祥明智能:公司的医疗健康领域有用于医疗器械的业务,随着疫情感染增加,相关风机的订单需求也在增加
- 今日要闻!滨江董事长戚金兴:明年销售目标占全国总额的1%
- 今日观点!北上资金2022全年累计净买入900亿元,这些行业被大幅加仓
- 天天百事通!京粮控股:餐饮行业复苏有利于公司产品销售
- 环球热议:热问丨新买二手房上有他人户口,应如何处理?
- 天天要闻:宏创控股:截止2022年12月30日股东人数为33,749
- 天天实时:房企年底迎交付大考 时代中国狠抓品质
- 今日热搜:河钢资源:公司2020年和2021年的营业收入均为扣除海运费及相关保险费用后的净额
- 重点城市打前阵 购房政策将继续优化
- 当代置业:重组生效日期条件已达成,撤销2023年4月票据上市
- 天天资讯:禾元生物冲刺科创板上市:累计亏损超4亿元,贝达药业为主要股东
- 世界快报:越秀服务拟展开股票期权激励计划 首次授予重要高管和核心员工
- 今亮点!未来十年,酒店加盟看“特许经营”?
- 世界时讯:赛道火热!国家电投2022年储能全动态
- 储能火热!73家企业入局、锂电池产业链“大扩产”
- 上海峰谷电价差最大1.88元/kWh!2023年1月电网代理购电价格公布!
- 电网侧新型储能发展需求分析
- 山东:6家独立储能电站参与现货电能量市场交易,总装机50.3万千瓦
- 环球精选!2022年土拍年末翘尾,房企利润空间充足,安置房回购项目反倒受追捧?
- 全球热门:证监会出手!点名两家互联网券商“无证驾驶”;富途、老虎美股大跌,被禁止招揽境内投资者和开立新账户
- 天天消息!10GWh储能项目!这家企业豪掷20亿元投资储能!
- 创业板"三创四新"迎来修订!守好创业板定位,新增明确研发指标,加码压实中介机构责任
- 天天热消息:渤海亿吨级油田垦利6-1主体区开发项目投产
- 世界聚焦:重回1.5元/W!组件价格也暴跌了吗?
- 焦点日报:我国首个氢能产品全链条公共检测服务平台正式对外开放
- 燃料油供应进一步收紧 期货盘面继续反弹
- 世界热推荐:中科院报告显示:我国生态环境建设取得巨大成效
- 如何申请公积金贷款买车 怎样申请用公积金买车
- 全球新资讯:保利发展计划非公开发行不超过8.19亿股 募集资金125亿元
- 当前滚动:当代置业:债务重组条件均已达成 已完成发行多个新票据
- 焦点热门:交强险过期怎么办 交强险过期如何处理
- 北京第五批集中供地上线,6宗宅地起始价超122亿元
- 百事通!大额医疗费用补助是什么意思 什么是大额医疗费用补助
- 公积金存缴基数,依据职工月均工资确定
- 合肥公积金怎么提取出来 如何提取合肥公积金
- 天天热消息:国美零售再获黄光裕1.3亿港元免息贷款 月内已注资6.3亿港元
- 成都放宽购房条件 父母投靠成年子女可购买一套住房
- 环球视讯!* 磷酸铁锂价格月跌幅2.35%,天赐材料跌近5%
- 世界今亮点!柴强:“稳租金”至关重要,让租赁企业发展更可持续
- 【天天播资讯】正荣地产今年交付4万余套房屋
- 越秀服务采纳一份股票期权计划 授出共1522万份股票期权
- 环球热点!华润三九也要“追光”?与华润新能源一起拿下中医药、新能源发电项目
- 【环球新要闻】雅居乐完成配售2.685亿股股份,募资净额6.17亿港元