python - 为什么 Python 中的命名表达式需要专用语法(:=, 海象运算符)?

标签 python python-3.x

我真的不明白为什么需要为命名表达式引入专用语法(:= 运算符),如 PEP572 所述。 .例如。一个应该写:

if (match := pattern.search(data)) is not None:
    # Do something with match
为什么不简单地if (match = pattern.search(data)) ?如果是因为向后兼容,那么注意下面的表达式:(x = 1)引发 SyntaxError: invalid syntax ,因此允许它并开始将其解释为命名表达式就足够了,而不是引入新的 :=运算符,顺便说一句,在大多数情况下,无论如何它都会被括号包围。
我觉得我没有看到其他人都得到的明显的东西;-)

最佳答案

因为explicit is better than implicit , 和 :=明确你执行任务的意图;而使用 =很容易是拼写错误的结果,这就是 = 的原因故意在 Python 中的表达式中不起作用。
其实不小心用了=而不是 ==比较内部是支持它的语言中常见的错误来源。

关于python - 为什么 Python 中的命名表达式需要专用语法(:=, 海象运算符)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63807658/

相关文章:

python - 将 Base64 图像上传到 S3 并返回 URL

python - 将列表的 LARGE 字符串表示形式转换为列表 Python 3

python - 返回列表中数字的第一次出现索引

python - numpy 数组内给定值的凸包 - python 2.7

python - 给定一个 Unicode 代码点列表,如何将它们拆分为 Unicode 字符列表?

python - Pandas 解析 csv 错误 - 预期 1 个字段找到 9

python - UHF RFID 阅读器和 Python

python - PyQt5 可重用文件选择对话框

python-3.x - 如何使用 Tensorflow 对象检测 API 定义自己的模型

python - 当嵌套函数运行时获取主函数名称 - 在 python 中