Python 3.9 如何修复装饰器并改进字典
这是 Python 3.x 首发特性系列文章中的第十篇,其中一些版本已经发布了一段时间。Python 3.9 在 2020 年首次发布,具有很酷的新特性,但仍未被充分利用。下面是其中的三个。
假设你有一个 defaults 字典,而你想更新它的参数。在 Python 3.9 之前,最好的办法是复制 defaults 字典,然后使用 .update() 方法。
Python 3.9 为字典引入了联合运算符:
defaults = dict(who="someone", where="somewhere") params = dict(where="our town", when="today") defaults | params
{who: someone, where: our town, when: today}
注意,顺序很重要。在这种情况下,正如预期,来自 params 的 where 值覆盖了默认值。
如果你用 Python 做临时的文本解析或清理,你会写出这样的代码:
def process_pricing_line(line): if line.startswith("pricing:"): return line[len("pricing:"):] return line process_pricing_line("pricing:20")
20
这样的代码很容易出错。例如,如果字符串被错误地复制到下一行,价格就会变成 0 而不是 20,而且会悄悄地发生。
从 Python 3.9 开始,字符串有了一个 .lstrip() 方法:
"pricing:20".lstrip("pricing:")
20任意的装饰器表达式
以前,关于装饰器中允许哪些表达式的规则没有得到充分的说明,而且很难理解。例如:虽然
@item.thing def foo(): pass
是有效的,而且:
@item.thing() def foo(): pass
是有效的,相似地:
@item().thing def foo(): pass
产生一个语法错误。
从 Python 3.9 开始,任何表达式作为装饰器都是有效的:
from unittest import mock item = mock.MagicMock() @item().thing def foo(): pass print(item.return_value.thing.call_args[0][0])
function foo at 0x7f3733897040
虽然在装饰器中保持简单的表达式仍然是一个好主意,但现在是人类的决定,而不是 Python 分析器的选择。
欢迎来到 2020 年Python 3.9 大约在一年前发布,但在这个版本中首次出现的一些特性非常酷,而且没有得到充分利用。如果你还没使用,那么将它们添加到你的工具箱中。
via: https://opensource.com/article/21/5/python-39-features
作者:Moshe Zadka 选题:lujun9972 译者:geekpi 校对:wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/50328.html
linuxpython相关文章
- python求逆矩阵的方法,Python 如何求矩阵的逆「建议收藏」
- python win32api messagebox_如何在Python中使用Win32 API?
- python中dtype的使用规范_Python numpy.dtype() 使用实例
- python截图识别文字_Python文字截图识别OCR工具实例解析
- python敏感词过滤replace_python用类实现文章敏感词的过滤方法示例
- java与python-如何对比Python和Java,只需三分钟告诉你!
- 爬虫python入门_python之路pdf
- 【说站】python字符串如何取值
- 【说站】python中popitem如何使用
- 【说站】如何用python画月饼
- python判断文件名是否包含某字段_python获取文件名不含后缀名
- python django 数据库_Apache+Mysql+PHP/Python简单项目
- 如何进入python命令行_如何通过命令行进入python[通俗易懂]
- python如何生成随机数_Python生成50个随机数
- python3 时间戳_python如何获取当前时间
- 上手Python之元组
- 【7】python_matplotlib 输出(保存)矢量图方法;画图时图例说明(legend)放到图像外侧;Python_matplotlib图例放在外侧保存时显示不完整问题解决
- 搭建python开发环境-c++教程 如何搭建Python开发环境?
- 【干货书】Python强化学习算法:学习、理解和开发智能算法以应对人工智能挑战
- 狂揽两千星,速度百倍提升,高性能Python编译器Codon开源
- 学习Python精通SQL Server操作技巧(python操作sqlserver)
- 如何使用Python安装MySQL(python安装mysql)
- Python简易操作MySQL数据库指南(python操作mysql数据库)
- Python如何连接PostgreSQL数据库?(python连接postgresql)
- 如何在Linux上将Python脚本设置为后台运行?(linux后台运行python)
- Python如何使用MySQL构建立连接(python怎么连接mysql)
- Linux下运行Python脚本的步骤简介(linux如何运行python脚本)