为什么在具有相同变量的语句中使用多个等号?

Eri*_*der 8 python

我遇到了使用具有相同变量的语句的示例代码:

event_type=event_type=str(payload_json['event'])
Run Code Online (Sandbox Code Playgroud)

我试过了:

a=b=c=d=10
Run Code Online (Sandbox Code Playgroud)

并且所有四个变量(a,b,c和d)都变为10.类似:

a=10
b=10
c=10
d=10
Run Code Online (Sandbox Code Playgroud)

这是一个亚马逊代码示例,所以我怀疑我对Python的理解而不是代码示例.该页面可在此处找到: AWS Kinesis示例

这可能发生什么?一些Python伏都教我不明白或只是一个错字?

7yl*_*l4r 2

a = a = b始终相当于python 中的a = b。正如您所描述的,使用具有多个等号的语句称为链式赋值,并且许多编程语言都支持。有些语言在检测到同一变量的链式赋值 (C) 时会引发错误,但其他语言则简单地忽略它(python、javascript)。

改变这种行为是一个坏主意,而且不容易实现,因为赋值运算符的行为内置于 python 中,没有提供修改钩子(请参阅:是否可以重载 Python 赋值?)。因此,我认为可以安全地假设这是您发现的(无害的)拼写错误。

  • 我建议您删除或限定这些注释在许多其他语言中是等效的。例如,在 C 中,“a = b”将“b”的值赋给“a”(根据需要和适当进行转换),但“a = a = b”具有未定义的行为(因为修改对象是非法的)序列点之间两次)。 (3认同)