当前位置: 首页 > 科技观察

Python3.9如何修复装饰器并改进字典

时间:2023-03-15 01:27:19 科技观察

探索Python最新版本的一些有用功能。这是Python3.x新特性系列的第10篇文章,其中一些已经发布了一段时间。Python3.9于2020年首次发布,具有很酷的新功能,但仍未得到充分利用。以下是其中的三个。添加字典假设您有一个默认字典并且您想要更新它的参数。在Python3.9之前,最好的方法是复制默认字典,然后使用.update()方法。Python3.9为字典引入了联合运算符:defaults=dict(who="someone",where="somewhere")params=dict(where="ourtown",when="today")defaults|params{'who':'someone','where':'ourtown','when':'today'}注意顺序很重要。在这种情况下,params中的where值将覆盖默认值,正如预期的那样。删除前缀如果您在Python中进行临时文本解析或清理,您将编写如下代码:defprocess_pricing_line(line):ifline.startswith("pricing:"):returnline[len("pricing:"):]returnlineprocess_pricing_line("pricing:20")像'20'这样的代码很容易出错。例如,如果字符串被错误地复制到下一行,价格就变成了0而不是20,它悄悄发生了。从Python3.9开始,字符串有一个.lstrip()方法:"pricing:20".lstrip("pricing:")'20'任意装饰器表达式以前,关于在装饰器中允许使用哪些表达式的规则没有完全解释,很难理解理解。例如:while@item.thingdeffoo():pass是有效的,并且:@item.thing()deffoo():pass是有效的,类似的:@item().thingdeffoo():pass产生语法错误.从Python3.9开始,任何表达式都可以作为装饰器:fromunittestimportmockitem=mock.MagicMock()@item().thingdeffoo():passprint(item.return_value.thing.call_args[0][0])虽然在装饰器中保持表达式简单仍然是一个好主意,但现在这是一个人的决定,而不是Python解析器的选择。欢迎来到2020年Python3.9大约在一年前发布,但此版本中首次亮相的一些功能非常酷且未得到充分利用。如果您还没有将它们添加到您的工具箱中。