Python中的+=是什么意思?

6
这是什么意思:

当出现这种情况时,它意味着什么:

self.something += ('somethin',)

What does "+=" mean and what does the comma mean?


关于逗号:https://dev59.com/0m865IYBdhLWcg3wkfYW - John Flatness
4个回答

12

a += b 表示 a = a + b 的简写形式,其中ab可以是数字、字符串、元组或列表(但两个变量必须是相同的类型)。

('x',) 中,逗号表示这是一个由单个元素'x'组成的元组。如果省略逗号,则括号中只有一个 'x'


2
[严谨] 这不是另一个版本的“速记”。你可以让它做非常不同的事情... - JBernardo

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

您可以用此样式进行其他操作,如-=, *=, /=, &=(按位与),|=(按位或),^=(按位异或),%=(求余),**=(指数)。


('something',)是一个元组。而('something')(没有逗号)则是使用圆括号来进行分组的,有点像('some' + 'thing')或者(a + b)。为了在语法上区别单个元素的元组和分组,Python使用了逗号。


7

Python有一个操作符用于给变量赋值,它就是=

这门语言还支持许多其他的操作符,如+-**等,用于执行在对象的特殊方法中定义的操作。

虽然+是数学上的加号,但你可以自定义它来执行任何你想要的操作。

有时候,你想执行一些操作并将其存储到同一个名称中。针对这种情况,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

1
results=[]
for x in range(5):
    results += '$' 
print(results)

output : ['$', '$', '$', '$', '$']

这段代码与典型的+=运算符不同,如您所见,它生成了一个带有$标志的列表。

它并不像我们认为的results = results+ '$'那样会抛出错误。

实际发生的是+=运算符在列表中的作用类似于.extend()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接