python - 为什么“if not a := say_empty()”会引发 SyntaxError?
问题描述
PEP 572引入了赋值运算符(“海象运算符”)。
以下代码有效,并输出empty
def say_empty():
return ''
if a := say_empty():
print("not empty")
else:
print("empty")
我试图否定条件:
def say_empty():
return ''
if not a := say_empty():
print("empty")
else:
print("not empty")
这引发了一个SyntaxError
if not a := say_empty():
^
SyntaxError: cannot use assignment expressions with operator
给定的错误很清楚,但是我想知道为什么要设置此限制。
PEP 572 解释了为什么在迭代中使用赋值是有问题的(并且会引发SyntaxError
),但我没有找到任何关于布尔值的信息。
解决方案
推荐阅读
- c# - c# 按项目块拆分列表
- android - 这个 android 应用教程代码中的 layoutInflater 定义在哪里?
- arrays - 如何在 Yii2 视图中更改数组的选择选项中的值?
- ruby-on-rails - Rails new 为 msgpack 抛出错误
- python - 重命名 pandas df 列会产生复制警告
- python - Django 电子邮件未发送,但在控制台中执行
- python - Python、Pandas:比较数据帧并分别保存旧的、更新的和新的
- google-tag-manager - Google 跟踪代码管理器中的错误:此语言功能仅支持 ECMASCRIPT6 或更好的模式
- javascript - 如何比较具有相同索引和值的数组
- php - CKEditor 5 CKFinder 图片上传错误 [PHP]