当前位置: 首页 > Linux

浅谈Python内置电池

时间:2023-04-06 02:27:19 Linux

本文首发于公众号【Python猫】,未经授权请勿转载。原文地址:https://mp.weixin.qq.com/s/XzCqoCvcpFJt4A-E4WMqaA(1)最近突然想到一个问题:Python与其他语言相比,有哪些独特的概念或成语?在朋友圈问了这个问题后,得到最多的回复是——Pythonic。这个回答一点也不奇怪。名字中带有Python的当然是独一无二的。与之类似的还有Pythonista。这两个词是什么意思?Python圈子里有一句话叫“人生苦短,我用Python”。人们相信有一种最佳实践方法,而且这种方法是最优美、最高效、最优雅的,即Pythonic,而这种做它(或追求它)的人称自己为Pythonistas。这个称谓不同于Pythoner或Pythonist。简单来说,就是更有追求,更有说服力。除了以上两个,Python还有很多独特的名字,比如终身仁慈的独裁者、装饰器、上下文管理器、派生与生成、鸭子类型、猴子补丁、魔法方法、GIL、内置电池等等。其中一些并不是Python独创或独有的,但它们却因此而广为人知,是Python中具有代表性的存在。(2)这些内容都很有意思,本文唯一要说的就是内置电池了。术语BatteriesIncluded是Python独有的。意思是Python有一块“内置电池”,即自带丰富多样的标准库,随时可用,充满电。在《PEP 206 -- Python Advanced Library》中,它提出了“BatteriesIncludedPhilosophy”(电池包含哲学):它拥有丰富的通用标准库,用户无需单独下载即可立即使用。还说这让Python领先于许多项目。根据官方文档,Python内置了200多个各类标准库,包括字符处理、数据类型、数值计算、文件处理、并发执行、网络通信、多媒体服务、图形界面、调试开发、操作等。系统独家服务等等。内置电池为Python提供了自给自足的能力(self-sufficient)。在大多数情况下,用户不需要下载和安装单独的软件包,从而消除了很多依赖性问题。(3)有些编程语言也有内置电池的概念,比如Perl、Ruby、PHP等,有些语言会强调自己内置的强大功能,比如Erlang(everythingisaprocess)、Go(goroutine机制)。不过,这个名字在Python中是最响亮的,而且还延伸到了技术生态中的其他项目,几乎成为了Python的专有名词。在维基百科上搜索“内含电池”。这个词条有4种解释,其中一种说明是Python'sMotto。这个词的意思是座右铭、箴言、座右铭。(4)内置电池不能面面俱到,所以需要所谓的第三方库,而Python也以丰富的第三方库着称。PyPI是PythonPackageIndex的缩写,即Python库索引。是一个用来管理三方库的项目。据该网站称,目前有18万个三方库及其135万个发布版本。也就是说,Python也有一个强大的外部电池,所以它实际上是双电源的。(5)双驱安然无恙,内置电池却越来越被诟病。在今年5月份的PyCon官方大会上,演讲嘉宾AmberBrown做了特别的分享。主要话题是内置电池“漏电”(Leaking):应用程序需要的不仅仅是质量差的标准库和落后的功能。过时的代码和标准库模块排挤了创新。她的想法是去掉一些标准库,比如asyncio和大部分新特性,迁移到PyPI,拥抱社区。这样做的预期效果是:内置电池将变得轻量化、小型化、高品质化,三方库的生态也将得到进化。其他开发人员也讨论了这个话题。标准库维护团队表示,部分模块的迁移工作已经在进行中,但这需要精心设计。此外,不可忽视的是,将库迁移到PyPI也需要测试配置工作量。也有反对意见认为,精简标准库可能会损害下游代码,部分企业用户只信任标准库而排斥第三方库,这无疑会增加用户的负担。(6)我们的许多电子设备都由电池供电。虽然它们的形态和材质多种多样,但不可避免地会遇到老化问题(有的手机甚至会爆炸)。Python的内置电池也不例外,然而,这种电池的维修或更换并不像物理世界中的电池那么容易。十多年前官方就提出了PEP-206和PEP-3108。当时核心开发者发现有些标准库容易被入侵,设计不好,有更好的替代库,于是推荐了很多第三方库,作为标准库的替代品。这么多年来,很多老旧的库已经退役,但又增加了很多新的库,革命还没有成功。5月,在PyCon的讨论之后,一些开发人员发起了PEP-594,这是一项将“废电池”移出标准库的提案。目前PEP还处于草案阶段,但已经基本成为社区的共识。PEP中提出,移除工作应该从Python3.8开始,因为它的发布时间刚好在Python2.7维护之前,可以顺利承接大版本迁移的用户。然后,按照有序的清理计划,最终在Python3.10版本中完成了对所有过时模块的清理。也就是说,内置电池的“开刀”速度加快,未来几年将成为常态。(7)内置电池的理念帮助Python成长和征服,成为最主流的编程语言之一。但其面临的挑战是:功能完备与轻量化和可维护性之间的矛盾,官方支持与社区分工之间的选择,所以必然会走到今天的地步。正如任何大型项目都可能遭受内存泄漏和性能下降一样,这个Python项目也是如此。淘汰坏死组织,精简行政,改革过去,与时俱进,这就是Python核心团队正在做的事情。从去年年底开始,我就一直在关注Python最高决策层的选举,而上个月,正好翻译了一篇介绍GIL移除计划的文章《GIL 已经被杀死了么?》。这些事件都说明了一件事:蟒蛇充满了生命力,大蟒蛇蜕皮后,将迎来新的生命。我们是多么幸运能成为见证人。不用说,让我们重温一下这句伟大的口号——人生苦短,我用Python。公众号【Python猫】,本号连载系列精品文章,包括喵星哲学猫系列、Python进阶系列、好书推荐系列、技术写作、优质英文推荐与翻译等,欢迎收看注意。后台回复“爱学习”,免费领取学习大礼包。