Python 2.7终结于7个月后,这是你需要了解的3.X炫酷新特性

网上娱乐场mg电子游艺

Python 2.7在7个月后结束,这是您需要了解的新的3.X酷功能

来自datawhatnow

作者: Vinko Kod oman

参与:Geek AI,思源

从3.0到3.8,Python 3已经更新了一波波浪,但似乎我们与2.7没有太大的不同。如何编写2.7之前的代码,现在怎么写,但是一些表达式已经改变了。在本文中,作者介绍了自3.0以来新的Amazing新功能和新方法。也许我们不熟悉这些方法,但它们在实践中非常重要。

在得知Python 2.7即将停止维护之后,许多人已经开始将他们的Python版本从2转换为3。截至5月19日上午10点,Python 2.7将以.结束。

bd662ab42dc645cd8db7b0db6ac57bb7.jpeg

在此期间,许多优秀的开源项目和图书馆已停止支持2.7。例如,到今年1月,NumPy将停止支持Python 2;到今年年底,Ipython,Cython,Pandas等将停止支持Python 2。

尽管我们都迁移到3.X,但许多人编写的Python 3代码仍然看起来像Python 2,添加了一些括号或一些API更改。在本文中,作者将展示Python 3.X中一些令人兴奋的新功能。这些特性或方法对于每个Python 3版本都是新的,并且它们比传统的Python方法更容易解决实践中的一些问题。

所有示例都是在Python 3.7环境中编写的,每个功能示例都提供了正常工作所需的最低Python版本。

格式化字符串f-string(最小Python版本为3.6)

在任何编程语言中,不使用字符串都很困难。为了保持您的想法清晰,您将需要一种结构化的方式来处理字符串。大多数使用Python的人更喜欢使用“格式”方法。

User='Jane Doe'

行动='购买'

Log_message='用户{}已登录并执行了操作{}。'。format(

用户,

操作

打印(log_message)

#User Jane Doe已登录并执行了操作。

除了“格式”之外,Python 3还提供了一种灵活的方式来插入带有“f-string”的字符串。用“f-string”编写的代码具有与上述相同的功能:

User='Jane Doe'

行动='购买'

Log_message=f'User {user}已登录并执行了{action}动作。'

打印(log_message)

#User Jane Doe已登录并执行了操作。

与常见的字符串格式化程序%s或格式方法相比,f-strings更容易,更直接地将变量直接插入占位符。

路径管理库Pathlib(最低Python版本为3.4)

F字符串非常强大,但是像文件路径这样的字符串有自己的库,可以更容易地操作它们。 Python 3提供了一个处理文件路径的抽象库“pathlib”。如果您不知道为什么要使用pathlib,请参阅Trey Hunner的博客文章:“"

Frompathlib importPath

Root=Path('post_sub_folder')

打印(根目录)

#post_sub_folder

Path=root /'happy_user'

#使路径绝对

打印(path.resolve())

#/home/weenkus/Workspace/Projects/DataWhatNow-Codes/how_your_python3_should_look_like/post_sub_folder/happy_user

如上所示,我们可以直接对路径的字符串执行“/”操作,并在绝对地址和相对地址之间进行转换。

类型提示类型提示(最小Python版本为3.5)

静态和动态类型是软件工程中的热门话题,几乎每个人都有自己的看法。读者应该自己决定要编写哪种类型,因此至少需要知道Python 3支持类型提示。

Defsentence_has_animal(句子: str) - > bool:

Return'animal'insentence

Sentence_has_animal('唐纳德有一个没有动物的农场')

#True

枚举(最小Python版本为3.4)

Python 3支持通过“Enum”类编写枚举的简单方法。枚举是一种包装常量列表的便捷方式,因此如果这些列表在结构上不强,则它们不会随机分布在代码中。

Fromenum importEnum,auto

classMonster(Enum):

ZOMBIE=汽车()

WARRIOR=汽车()

BEAR=汽车()

打印(Monster.ZOMBIE)

#Monster.ZOMBIE

枚举是绑定到唯一常量值的符号名称(成员)的集合。在枚举中,您可以通过标识它们来比较成员,并且可以遍历枚举本身。

参考:

Formonster inMonster:

打印(怪物)

#Monster.ZOMBIE

#Monster.WARRIOR

#Monster.BEAR

本机LRU缓存(最小Python版本为3.2)

目前,几乎所有级别的软件和硬件都需要缓存。 Python 3使用LRU(最近最少使用的算法)缓存作为名为“lru_cache”的装饰器,使得缓存的使用非常简单。

以下是一个简单的Fibonacci函数,我们知道使用缓存将有助于函数的计算,因为它将通过递归多次执行相同的工作。

Importtime

Deffib(编号: int) - > int:

Ifnumber==0: return0

Ifnumber==1: return1

Returnfib(数字-1)+ fib(数字-2)

开始=了time.time()

Fib(40)

打印(f'Duration: {time.time() - start} s')

#Duration: 30.684099674224854s

现在我们可以使用“lru_cache”来优化它(这种优化技术称为“memoization”)。通过这种优化,我们将执行时间从几秒减少到几纳秒。

Fromfunctools importlru_cache