python3.6新功能
任何无法随时间增加新功能的编程语言都已不再是具有未来的技术,而已成为过去的技术。 Python 3继续通过添加重要的新功能而前进,尽管当您全神贯注于开发工作的精髓时,很难跟上它们。
这是Python 3的最后几个版本中的六个最新功能,这些功能不仅值得您关注,而且可能会在您的软件项目中占有一席之地。
[ 同样在InfoWorld上:每个Python开发人员都有24个Python库 ]
F弦
Python的Zen指出应该有一种显而易见的做事方法。 Python中的字符串格式与该规则有很大的出入,因为有很多方法可以做到这一点。 但是在Python 3.6中推出的“ f字符串”格式既最快又最方便。 但是,许多在早期版本的Python中学习字符串格式的Python程序员却没有利用它们。
要使用f字符串,只需将要包括在字符串中的变量放在花括号中,并用f
前缀修饰字符串:
filename = "file.jpg" f_name_str = f"Your file is {filename}"
结果:
Your file is file.jpg
几乎所有有效的Python表达式都可以放在大括号中。 您可以使用Python的内部表达式格式语言在其中装饰表达式。 您可以对多行f字符串使用三引号。
这些优点使f字符串成为字符串格式的便捷首选,因为它们可以优雅地覆盖绝大多数用例。 大约只有在您需要通过.format
命令传递任意格式参数时,才不想使用f字符串。
另一个好处是:f字符串的渲染速度远远快于format
命令或%
string-rendering运算符。 在大多数情况下,f字符串的速度几乎是format
两倍,比%
稍快,并且比Template
格式化对象快一个数量级。
Python 3.8在f字符串中添加了一个新的加号: 内部调试 。 在f字符串表达式的末尾添加一个等号,渲染该字符串时,您会看到其他数据:
filename = "file.jpg" f_name_str = f"Your file is {filename=}"
结果:
Your file is filename='file.jpg'
异步
异步编程(或简称为异步)使您可以将需要等待外部事件(例如网络请求或磁盘I / O)的多个任务排队,并在它们之间高效切换。 异步是一种使某些作业具有多线程效率的方式,但操作开销却少得多。 异步操作占用的内存少得多,并且切换速度远快于线程。
Python在3.4版中引入了asyncio
库,在3.5版中引入了async
/ await
关键字,从那以后,该语言一直在稳定地添加和改进async的工作方式。
如果您尚未在代码中使用异步,则值得探讨 。 毕竟,任何花时间等待磁盘或网络操作的程序都将从异步代码中受益。 一个警告:首先学习异步可能会很棘手,因为它需要对代码进行不同的思考。
[ 同样在InfoWorld上:Python异步编程入门 ]
资料类别
Python 3.7引入了数据类 ,该数据类提供了一种编写存储许多数据元素的类的方法,而无需使用大量的样板构造函数或初始化程序代码。 例如:
from dataclasses import dataclass @dataclass class Student: name: str student_id: int gpa: float
此代码自动生成__init__
函数,以将name
, student_id
和gpa
分配给类实例中的它们各自的变量。 它还为该类生成比较运算符。 生成的类是与其他类一样的类。 唯一的区别是定义方式。
如果创建的类主要是许多命名数据元素的容器,并附加了一些方法,则数据类可以避免为每个类编写细节问题的麻烦。
赋值表达式(“海象运算符”)
这是一个常见的构造:
my_val = func_result() if my_val == 1: do_something_else()
赋值表达式语法 (也称为“ walrus运算符”)使您可以将局部作用域中的变量赋值压缩为一行。
if (my_val:=func_result()) == 1: do_something_else() # my_val continues to be a valid value
由于此语法仅在Python 3.8及更高版本中有效,因此您应仅在保证使用这些更高版本的Python的新项目中使用它。 但这是减少Python代码中经常弹出的样板的一种便捷方法。
Breakpoint()函数
大多数Python开发人员使用其Python IDE中的功能进行调试,例如在代码中手动插入断点。 breakpoint()
函数是Python 3.7中的新增功能 ,可让您手动将断点插入代码中—例如,在仅由某些条件触发的代码路径中。 这样可以更轻松地创建交互式调试行为。 使用breakpoint()
,甚至还可以使用自定义调试功能,而不是默认的pdb
,从而触发该功能。
[ 通过InfoWorld的App Dev Report新闻通讯了解软件开发中的热门话题 ]
类型提示改进
在最长的时间里,Python没有明确的方式来指定变量或函数参数的类型。 现在, Python解释器直接支持 类型提示和typing
模块 。
在运行时不强制使用Python中的类型提示。 但是,当与整理工具结合使用时,类型提示会消除很多错误,这些错误否则可能由于Python的动态性而在生产中爆发。 Solo和团队开发人员都可以从中受益。 此外,可以根据需要将类型提示逐渐添加到代码库中。 例如,您可能首先在团队之间使用的接口周围使用类型提示,然后在内部接口周围使用类型提示。
将来,我们可能会看到更加积极地使用mypyc
等第三方项目,以通过类型提示来实现Python的运行时加速。 如果只是有限的话,那么现在可能会获得一些性能提升。 但是使用类型仍然有许多其他直接好处,这些好处与程序员的工作效率(Python的中坚力量)有关,而不是与原始性能有关。
翻译自: https://www.infoworld.com/article/3514948/6-great-new-python-features-you-dont-want-to-miss.html
python3.6新功能