你用Python 3了吗?这个飞向火星的语言已经30岁了!

简介: Python30岁了!「没想到Python这么流行!」

不知不觉,Python 30周年啦!


在很多方面,Python都是一种「动态的」语言。没错,它是一直发展的,这一点与C或C++都不一样。

40.jpg

对Python语言来说,2021年3月很重要,因为这期间它核心发生了明显的变化——增加了结构模式匹配,现在可以在Python 3.10.0的最新alpha版本中进行测试。


除了语言本身的变化之外,3月对Python来说是一个充满激动人心和历史性时刻的月份。该语言庆祝了它的30岁生日,并成为第一批登陆其他星球的开源技术之一。


那么从今年3月份到现在,它又发生了哪些变化呢?


一起速览一下吧!


Python Turns 30 Years Old


尽管Python的实际诞生日期是1991年2月20日,也就是0.9.0版本发布的时候,但3月是一个值得庆祝的好月份——今年三月是Python软件基金会成立20周年,该基金会成立于2001年3月6日。


在它的三十年中,Python已经发生了很大的变化--无论是作为一种语言还是作为一个组织。


例如,从Python 2到Python 3的过渡花了十年的时间才完成。


而且,其决策的组织模式也发生了变化。语言的创造者Guido van Rossum曾经是掌舵人,但在2018年成立了一个五人指导委员会来规划Python的未来。

41.jpg

结构模式匹配进入Python 3.10.0


Python 3.10.0是Python的下一个小版本,预计将在2021年10月4日drop on.


这次更新将给核心语法带来一个很大的补充:结构模式匹配,这是在PEP 634中提出的。


你可以说结构模式匹配为 Python 增加了一种开关语句,但不完全准确。模式匹配的作用远不止这些。


例如,以PEP 635中的一个例子为例。假设你需要检查一个对象x是否是一个包含套接字连接的主机和端口信息的元组,以及可选的模式,如HTTP或HTTPS。你可以用if...elif...else块来写这样的东西。



42.jpg

而新的结构模式匹配能让你更简洁地写出:

43.jpg

匹配语句检查对象的形状是否与其中一个案例相匹配,并将对象的数据与案例表达式中的变量名绑定。


但是,并非每个人都对模式匹配感到兴奋,该功能受到了来自核心开发团队内部和更广泛的社区的批评。


在验收公告中,指导委员会承认了这些担忧,同时也表达了他们对该提案的支持。


我们承认模式匹配是对Python的广泛改变,在整个社区达成共识几乎是不可能的。不同的人对语义和语法的不同方面有保留或担忧(指导委员会也是如此)。尽管如此,经过反复讨论,......我们相信PEP 634等文件中规定的模式匹配将是对Python语言的一个伟大补充。


虽然众说纷纭,但模式匹配将出现在下一个 Python 版本中。你可以通过阅读PEP 636中的教程来了解更多关于模式匹配的工作原理。https://www.python.org/dev/peps/pep-0636/


Python Lands on Mars


2月18日,毅力号火星车在经历了七个月的旅程后在火星上着陆!


毅力号依靠大量的开源软件和现成的硬件,使其成为迄今为止最容易获得的火星车项目。


Python就是毅力号上的开源技术之一。它被用于处理登陆时拍摄的图像和视频。


毅力号携带的最令人兴奋的实验之一是火星直升机,这是一架小型无人机,被用来测试在稀薄的火星大气中的飞行。



44.jpg

注意了!Python是飞行控制软件的开发要求之一,该软件被称为F'。


2020年Python开发者调查结果出炉


由JetBrains和Python软件基金会进行的2020年Python开发者调查的结果已经出来了,与去年的调查相比,它们显示了一些有趣的变化。


在2020年,94%的受访者报告主要使用Python 3,这比2019年的90%和2017年的75%有所增加。有趣的是,在计算机图形和游戏开发领域的大多数受访者中,Python 2仍然被广泛使用。

45.jpg

Flask和Django继续主导网络框架,分别有46%和43%的采用。新来的FastAPI是第三大最受欢迎的网络框架,采用率为12%--考虑到2020年是该框架首次出现在选项列表中,这是一个不可思议的壮举。

46.jpg

Visual Studio Code在回答 "你目前使用的Python开发的主要编辑器是什么 "的问题时,获得了5%的份额。这使得微软的IDE获得了29%的份额,并进一步缩小了Visual Studio Code和PyCharm之间的差距,后者仍然以33%的份额位居榜首。


查看调查结果,了解更多关于Python及其生态系统的统计数据。https://www.jetbrains.com/lp/python-developers-survey-2020/


Django 3.2即将推出的新功能


Django 3.2将在2021年4月的某个时候发布,随之而来的是一个令人印象深刻的新功能列表。


一个主要的更新是增加了对功能索引的支持,它允许你对表达式和数据库函数进行索引,例如索引小写字母的文本或涉及一个或多个数据库列的数学公式。


功能性索引是在模型类的Meta.indexes选项中创建的。下面是一个改编自官方发布说明的例子。

47.jpg这创建了一个名为calc_idx的功能索引,它索引了一个将身高字段除以体重字段,然后加5的表达式。


对PostgreSQL覆盖索引的支持是Django 3.2中另一个与索引相关的变化。一个覆盖索引可以让你在一个索引中存储多个列。这使得只包含索引字段的查询可以得到满足,而无需额外的查表。换句话说,你的查询可以快得多!


另一个值得注意的变化是增加了管理员网站装饰器,简化了自定义显示和操作功能的创建。


关于Django 3.2中新功能的完整列表,请查看官方发布说明。Python贡献者Haki Benita也有一篇有用的概述文章,通过更多的背景和几个例子来引导你了解一些即将到来的功能。https://hakibenita.com/django-32-exciting-features


PEP 621达到最终状态


早在2016年,PEP 518就引入了pyproject.toml文件,作为指定项目构建要求的一个标准化的地方。在此之前,你只能在setup.py文件中指定元数据。这引起了一些问题,因为执行setup.py和读取构建依赖项需要安装一些构建依赖项。


pyproject.toml在过去几年中得到了普及,现在被用于存储构建需求之外的东西。像black autoformatter这样的项目使用pyproject.toml来存储软件包配置。


PEP 621在2020年11月被暂时接受,并在2021年3月1日被标记为最终版本,它规定了如何在pyproject.toml文件中写入项目的核心元数据。从表面上看,这似乎是一个不太重要的PEP,但它代表了继续远离setup.py文件的运动,并指出了Python打包生态系统的改进。


PyPI是GitHub秘密扫描的集成商


Python Package Index,简称PyPI,是下载构成Python丰富生态系统的所有软件包的地方。在pypi.org网站和files.pythonhosted.org之间,PyPI每月产生超过20PB的流量。这相当于超过20,000TB!


有这么多的人和组织依赖PyPI,保证索引的安全是最重要的。这个月,PyPI成为GitHub的官方秘密扫描集成商。现在,GitHub将检查公共仓库的每一次提交是否有泄露的PyPI API令牌,如果发现任何泄露,将禁用仓库并通知其所有者。


4月又会有哪些变化呢?


等待新的总结吧!



相关文章
|
8天前
|
Unix 编译器 C语言
[oeasy]python052_[系统开发语言为什么默认是c语言
本文介绍了C语言为何成为系统开发的首选语言,从其诞生背景、发展历史及特点进行阐述。C语言源于贝尔实验室,与Unix操作系统相互促进,因其简洁、高效、跨平台等特性,逐渐成为主流。文章还提及了C语言的学习资料及其对编程文化的影响。
20 5
|
2月前
|
算法 安全 Go
Python与Go语言中的哈希算法实现及对比分析
Python与Go语言中的哈希算法实现及对比分析
46 0
|
4月前
|
JSON 数据格式 Python
python中有哪些常用语言成分?
Python作为一种广泛使用的编程语言,其语言成分丰富多样,涵盖了多个方面。
72 9
|
4月前
|
机器学习/深度学习 人工智能 文字识别
轻松识别文字,这款Python OCR库支持超过80种语言
轻松识别文字,这款Python OCR库支持超过80种语言
|
4月前
|
机器学习/深度学习 数据可视化 数据挖掘
为啥我敢说Python是数据分析界的扛把子语言?
为啥我敢说Python是数据分析界的扛把子语言?
|
4月前
|
Rust JavaScript Java
简单对比Java、Python、Go、Rust等常见语言计算斐波拉契数的性能
简单对比Java、Python、Go、Rust等常见语言计算斐波拉契数的性能
|
5月前
|
机器学习/深度学习 存储 自然语言处理
使用Python实现深度学习模型:语言翻译与多语种处理
【7月更文挑战第21天】 使用Python实现深度学习模型:语言翻译与多语种处理
218 0
|
7月前
|
安全 Java C语言
【Python 的内存管理机制专栏】Python 内存管理机制与底层实现:C 语言视角的剖析
【5月更文挑战第18天】Python的内存管理涉及对象分配、引用计数和垃圾回收。对象分配类似C的动态内存,但更自动化。引用计数跟踪对象引用,计数为0时回收。垃圾回收机制自动清理不再使用的对象,避免内存泄漏。这种高效自动化管理让开发者能专注于业务逻辑,而底层实现的理解有助于解决特殊问题和优化性能。
188 4
【Python 的内存管理机制专栏】Python 内存管理机制与底层实现:C 语言视角的剖析
|
6月前
|
索引 Python 安全
【Python内功心法】:深挖内置函数,释放语言潜能
【Python内功心法】:深挖内置函数,释放语言潜能
|
6月前
|
机器学习/深度学习 Java 开发者
Python vs. Java:语言之争的终结
【6月更文挑战第8天】Python与Java,两种影响力巨大的编程语言,各有千秋。Python以简洁语法和强大库支持在数据科学、机器学习领域大放异彩,适合快速原型设计;而Java以其稳定性能、跨平台兼容性在大型系统、企业应用中占据一席之地。语言之争实为互补,开发者应根据项目需求选择合适工具,两者和谐共存,共同推动编程技术进步。