Python 因其易于学习、易于阅读和相当容易调试而在编程世界中声名鹊起。它被认为是一种很好的入门语言,因为它通常可以代表程序员解决数据类型等复杂概念。它被认为易于阅读,因为它的语法简单,并且强制执行可预测的格式。而且它很容易调试,因为它不仅可以自行捕获许多错误,还可以与 GNU 调试器 (gdb
) 等高级工具集成。而这还是 Python 3 之前的声誉。
像生活中的其他一切一样,对于编程语言来说,改变是不可避免的。Python 必须迭代和发展,因为计算机永远在进步,人们对“简单”编程语言能为他们做什么的期望也在随着时间而改变。此外,其他语言有时会提出非常好的想法,这些想法会被吸收到 Python 中。Python 2.x 非常受欢迎,因此当 Python 3 开始在天边出现时,兴奋之中夹杂着相当多的焦虑。每个人都想知道 Python 怎么可能变得更好,但也存在着对改变的必然恐惧、重要库可能不会升级的潜在损失,以及适应现有代码库所需工作量的不确定性。
多年以后,随着 Python 3 的稳固确立,可以肯定地说,过渡进行得很顺利。更重要的是,Python 3 持续发展和迭代,引入了令人兴奋的增强功能,这些功能远远超出了该语言早期迭代的目标。
在他的系列文章中,Moshe Zadka 详细介绍了 Python 3 迄今为止的 30 项最重大改进
- Python 3.0
- Python 3.1
- Python 3.2
- Python 3.3
- Python 3.4
- Python 3.5
- Python 3.6
- Python 3.7
- Python 3.8
- Python 3.9
Python 3 中的新功能太多了,无法在一篇文章中全部包含,但这里有五个我最喜欢的功能。
1. 仅限关键字参数
在 Python 3.0 中,关键字参数变得非常重要。这个想法相对简单:如果您有一系列参数,其中一些是可选的,那么您过去需要传递一些东西来表示每个参数槽。
例如,假设您有一个定义为 generate_widget(position, shape, color)
的函数,但 shape
参数是可选的。在以前版本的 Python 中,即使 shape
不是必需的,您也无法跳过它
generate_widget(10, None, 'Blue')
但是,从 Python 3.0 开始,您可以指定参数,以便将未提供的任何参数设置为 None
generate_widget(10, color='Blue')
这是一个非常简单的改进,但它使 Python 感觉更像其他语言——以一种好的方式。而且,当您使用具有 15 个可选参数的函数时,您会很快学会欣赏这种变化。
2. 友好的格式化
Python 3.1 引入了朴实无华(并且可以说是微不足道的)千位分隔符格式化功能。简而言之
>>> print("1024 becomes {:,d}".format(1024))
1024 becomes 1,024
这并非颠覆性的,也不是必不可少的,但它代表着一些重要的东西:便利性。但便利性有时正是 Python 的全部意义所在。
3. 缓存
如果您深入研究 Python,您可能会发现自己出乎意料地深入了计算机科学。functools.lru_cache
功能就是一个很好的例子,但它同时也是 Python 如何将真正高级的编码原则变得人人可用的一个很好的例子。
使用 functools.lru_cache
,您可以在代码中使用单个语句 (@functools.lru_cache
) 来使 Python 能够重用先前计算的值的结果。
4. Pathlib
Python 过去对文件系统路径的处理还算不错,但它们始终是基于字符串的。这对于大多数程序员来说具有熟悉性的优势,因为任何基本 Python 课程中的一些初始课程都涉及字符串操作。但是,将路径视为字符串对于高级操作来说可能很麻烦。pathlib
模块使 Python 能够将路径视为对象
>>> myfile = pathlib.Path.home() / "example.txt"
>>> text = myfile.read_text().splitlines()
>>> for line in text:
print(line)
Hello
open
source
world
5. os.scandir
Python 的 os
模块具有许多用于与 Python 正在运行的任何操作系统进行交互的实用程序。Python 3.5 的新功能是 scandir
函数,该函数将目录内容视为数据对象
>>> os.scandir()
<posix.ScandirIterator object at 0x7fe589a8acc8>
>>> for entry in os.scandir():
... print(entry)
<DirEntry '.backups'>
<DirEntry 'example.txt'>
<DirEntry '.gitignore'>
<DirEntry '.git'>
诚然,对于新的编码人员来说,扫描目录并获得数据对象而不是列表可能会令人困惑,但是处理对象而不是字符串和其他基本数据类型是需要学习的重要课程。像 scandir
可选关键字这样的功能表明 Python 3 已朝着传统语言的期望和约定迈出了重要一步。
Pythonic 成长
Python 的发展帮助该语言比以往任何时候都更具相关性,但对于许多程序员来说,Python 使他们能够作为编码人员成长的这种方式最吸引他们。如果您是一位刚开始使用 Python 的新程序员,您只需学习一些基本课程即可完成一些强大的事情。无论您是想编写一个实用程序来帮助您完成工作,还是编写一个脚本来帮助您管理服务器,或者只是一个 简单的游戏 来消磨时间,Python 都可能是一个合适的解决方案。
您对 Python 掌握得越好,您就越能学会使用它的特殊功能。您越熟悉这些功能,您就能使用 Python 做更多的事情。许多 Python 程序员最初只是编写简单的脚本,却在几年内意外地发现自己成为了专业的开发人员。
我们的 Python 3 电子书 旨在教您 Python 3 的一些高级功能。这不适合初学者。您应该具备 Python 的工作知识,并且应该渴望学习强大的新功能,以使您的代码更优雅、更高效、更 Pythonic。
评论已关闭。