from datetime import datetime
now = datetime.now()
q = int(now.strftime('%I'))
w = int(now.strftime('%M'))
def correct_time(delta):
if w < (120 - delta):
Q = q + 1 and W = w + (delta - 60)
else:
Q = q + 2 and W = w + (delta - 120)
return Q, W
correct_time(45)
#gives error - SyntaxError: can't assign to operator
在上面的代码中,我试图分别为 Q 和 W 分配新的 q 和 w 值。当我只尝试为 Q 或 W(不是在同一行中的两者)分配新值时,我没有得到任何错误,但是当我使用“和”(如上述情况)或“,”时,我得到了这样的错误。
我在互联网上搜索了“无法分配给运算符(operator)”错误,但发现它们与我的案例无关。我想知道为什么上面的代码在遵循赋值规则时会出错。
最佳答案
我们都知道只有表达式和表达式
是有效的。所以这里的重点是,在Python中,assignment
只是一个statement
,而不是expression
。在C
中,a = 3
是赋值表达式
,a = 3 && b = 4
是有效的。但是,这在 Python 中是无效的。
并且Python在3.8中将有自己的赋值表达式
:PEP 572 -- Assignment Expressions | Python.org
在Python3.8中,你将可以做这样的事情:
# This block code only works with Python3.8+
from datetime import datetime
now = datetime.now()
q = int(now.strftime('%I'))
w = int(now.strftime('%M'))
def correct_time(delta):
if w < (120 - delta):
(Q := q + 1) and (W := w + (delta - 60))
else:
(Q := q + 2) and (W := w + (delta - 120))
return Q, W
correct_time(45)
但是,这不是必需的,因为你可以用 Python 做这样的事情:
a, b = 1, 2
等于
a = 1
b = 2
关于python - 为什么 Python 显示错误 : can't assign to operator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57637216/