这样的意思是什么:
self.something += ('somethin',)
“+ =”是什么以及逗号含义是什么?
答案 0 :(得分:7)
表达式a += b
是a = a + b
的简写,其中a
和b
可以是数字,字符串,元组或列表(但两者都必须是相同的类型)。
('x',)
中的逗号表示这是单个元素的元组'x'
。如果逗号不存在,则在括号之间只有'x'
。
答案 1 :(得分:2)
Python有一个运算符可以为名称赋值,它是=
。
该语言还支持许多其他运算符,例如+
,-
,**
,用于对象的特殊方法中定义的操作。
虽然+
是添加内容的数学符号,但可以自定义以执行任何操作。
有时您想要进行操作并使用相同的名称存储它。对于这些情况,您有就地操作符,这些操作符只是您使用的普通操作符加上=
符号。
对于不可变对象(数字,字符串,元组,......),您不能进行就地更改,因为......它们是不可变的。因此,就地方法与分配后的常规方法完全相同。
对于可变对象,差异很多清晰:
就地添加:
>>> a = []
>>> b = a
>>> b += [1,2]
>>> a
[1, 2]
添加并指定:
>>> a = []
>>> b = a
>>> b = b + [1,2]
>>> a
[]
请参阅?对象本身已使用就地添加列表进行转换,但在另一种情况下,创建了一个新对象。
对于您的其他问题,逗号是元组分隔符。
a = (1) # Just number 1 inside parenthesis
a = (1,) # A tuple with one element
答案 2 :(得分:1)
+=
is addition and assignment into one(有时称为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
您还可以使用此样式执行其他操作,例如-=
,*=
,/=
,&=
(按位和),|=
(按位)或),^=
(按位xor),%=
(mod),**=
(指数)。
('something',)
是tuple。 ('something')
(不使用逗号)在分组中使用括号,有点像('some' + 'thing')
或(a + b)
。为了区分单成员元组和语法分组,Python使用逗号。
答案 3 :(得分:-2)
这是Python中的后递增方法。 num + = 1与num = num + 1相同。