生产企业做网站有用吗,最新的国际新闻,百度网页版网址链接,创意餐厅网站建设文案书Python部落(python.freelycode.com)组织翻译#xff0c;禁止转载#xff0c;欢迎转发。
由于Python EOL的发布#xff0c;许多人开始将他们的Python版本从2切换到3。不幸的是#xff0c;我发现大多数Python3看起来仍然像Python2#xff0c;但是要加括号(尽管在我之前的文章…Python部落(python.freelycode.com)组织翻译禁止转载欢迎转发。
由于Python EOL的发布许多人开始将他们的Python版本从2切换到3。不幸的是我发现大多数Python3看起来仍然像Python2但是要加括号(尽管在我之前的文章《使用Python进行web抓取介绍》中的代码示例也是这样)。下面我将展示一些令人兴奋的特性示例你只能在Python3中使用它们希望它可以让你使用Python解决问题变得更容易。
所有示例都是在Python 3.7中编写的每个特性都包含该特性所需的最低Python版本。
f-strings (3.6)
在任何编程语言中没有字符串是很难做任何事情的为了保持理智你希望有一种结构化的方法来处理字符串。大多数使用Python的人更喜欢使用format方法。除了formatPython 3还提供了一种通过f-strings进行字符串插值的灵活方法。和上面一样使用f-strings的代码是这样的:Pathlib (3.4)
f-strings非常棒但是有些字符串(比如文件路径)有自己的库这使得它们的操作更加容易。Python 3提供了pathlib作为一个处理文件路径的方便抽象。如果你不确定为什么你应该使用pathlib试着阅读这篇优秀的文章——《为什么你应该使用pathlib》——Trey Hunner。类型提示 (3.5)
静态和动态类型是软件工程中一个热门的话题几乎每个人都对此有自己的看法。我将让读者决定何时应该编写类型但我认为你至少应该知道Python 3支持类型提示。枚举 (3.4)
Python 3提供了一种通过Enum类来编写枚举的简单方法。枚举是封装常量列表的一种方便的方法因此它们不会在没有太多结构的情况下随机分布在你的代码中。枚举是一组符号名称(成员)它们绑定到惟一的常量值。在枚举中可以通过标识对成员进行比较并且枚举本身也可以被遍 历。内置的 LRU 缓存 (3.2)
缓存存在于我们今天使用的几乎所有水平的软件和硬件中。Python 3通过将LRU(最近最少使用的)缓存公开为一个名为lru_cache的装饰器使得使用它们变得非常简单。
下面是一个简单的Fibonacci函数我们知道它将从缓存中受益因为它通过递归多次执行相同的任务。现在我们可以使用lru_cache对其进行优化(这种优化技术称为memoization记忆化)。执行时间从几秒降到几纳秒。扩展的可迭代对象解包 (3.0)数据类 (3.7)
Python 3引入了数据类这些数据类并没有太多限制可以使用它们来减少样板代码因为装饰器会自动生成特殊的方法比如__init__() 和__repr()__。根据官方建议它们被描述为“具有默认值的可变命名元组”。使用数据类的Armor的相同实现。隐式命名空间包 (3.3)
结构化Python代码的一种方法是在包中(带有一个__init__.py文件的文件夹)。下面的示例是由官方Python文档提供的。在Python2中上面的每个文件夹都必须有一个__init__.py文件它会将该文件夹转换为一个Python包。在Python3中随着隐式命名空间包的引入这些文件就不再需要了。编者注:正如一些人所说这并不像我在本节中指出的那样简单从官方的PEP 420规范来看——__init__.py对于普通包仍然是必需的将它从文件夹结构中删除将会把文件夹变成一个带有附加限制的本地命名空间包关于本机命名空间包的官方文档对此展示了一个很好的例子以及命名所有的限制。
结束语英文原文https://datawhatnow.com/things-you-are-probably-not-using-in-python-3-but-should/
译者野生大熊猫