什么意思+ =在python中?

hye*_*ans 3 python syntax

它是这样的意思是什么意思:

self.something += ('somethin',)
Run Code Online (Sandbox Code Playgroud)

"+ ="是什么,逗号是什么意思?

Ósc*_*pez 8

表达式a += b是简写a = a + b,其中ab可以是数字,字符串,元组或列表(但两者必须是相同的类型).

逗号('x',)表示这是单个元素的元组,'x'.如果逗号不存在,则只是'x'括号之间.

  • [迂腐]这不是另一个版本的“速记”。你可以让它做__very__不同的事情...... (2认同)

Don*_*ner 8

+=是加法和赋值合二为一(有时称为iadd或就地添加)。它是一样的a = a + x

a = 4
a += 5  # add 5 to a, and assign the result into a
b = 4
b = b + 5   # this does the same thing as +=
print a  # prints out 9
print b  # prints out 9
Run Code Online (Sandbox Code Playgroud)

您还可以用这种方式执行其他运算,例如-=*=/=&=(按位与)、|=(按位或)、^=(按位异或)、%=(mod)、**=(指数)。


('something',)是一个元组('something')(不带逗号)在分组中使用括号,有点像('some' + 'thing')or (a + b)。为了在语法上区分单成员元组和分组,Python 使用逗号。


JBe*_*rdo 6

Python 有一个运算符可以为名称赋值,它是=.

该语言还支持许多其他运算符,例如+, -,**用于在对象的特殊方法中定义的操作。

虽然+是添加东西的数学符号,但可以自定义以执行任何您想要的操作。

有时您想进行操作并使用相同的名称存储它。对于这些情况,您可以使用就地运算符,这些运算符只是您习惯使用的普通运算符加上=符号。

对于不可变对象(数字、字符串、元组...),您不能进行就地更改,因为...它们是不可变的。因此,就地方法与后跟赋值的普通方法完全相同。

对于可变对象,区别非常明显:

就地添加:

>>> a = []
>>> b = a
>>> b += [1,2]
>>> a
[1, 2]
Run Code Online (Sandbox Code Playgroud)

添加和分配:

>>> a = []
>>> b = a
>>> b = b + [1,2]
>>> a
[]
Run Code Online (Sandbox Code Playgroud)

看?对象本身使用列表的就地添加进行了转换,但在另一种情况下,创建了一个新对象。


对于您的另一个问题,逗号是元组分隔符。

a = (1)   # Just number 1 inside parenthesis
a = (1,)  # A tuple with one element
Run Code Online (Sandbox Code Playgroud)