>>> y = (x = x + 1) # assignments not expressions! File "<stdin>", line 1
y = (x = x + 1)
^
SyntaxError: invalid syntax
>>> if (a = 3):
SyntaxError: invalid syntax
这就避免了判断语句中,将 == 符号误写成 = 的问题。是一个很好的功能。
同样的Python中链式赋值并没有问题。
>>> y = (x = x + 1) # assignments not expressions! File "<stdin>", line 1
y = (x = x + 1)
^
SyntaxError: invalid syntax
>>> if (a = 3):
SyntaxError: invalid syntax
同时还有增量赋值符
x = 2
y = x
第一句创建了一个整数对象并引用赋值给x。x是第一个引用,该对象的引用计数设置为 1 。当y = x 语句执行时,并没有为y创建一个新对象,而是该对象的引用计数增加了1次。这是引用计数的增加。同样还有作为参数被函数调用,或者对象被加到某个容器对象中时。
而当变量被赋值给另一个对象时,原对象的引用计数也会自动减 1