+ =在python中究竟做了什么?
我需要知道python中有什么+ =。 就这么简单。 我也希望能够链接到python中其他短手工具的定义。
在Python中,+ =是__iadd__
特殊方法的__radd__
如果__iadd__
不存在, __add__
或__radd__
。 类的__iadd__
方法可以做任何事情。 列表对象实现它,并使用它来遍历一个迭代对象,将每个元素附加到自身,就像列表的扩展方法一样。
这是一个简单的自定义类,它实现了__iadd__
特殊方法。 用int初始化对象,然后可以使用+ =运算符来添加一个数字。 我在__iadd__
添加了一个打印语句来显示它被调用。 此外, __iadd__
预计会返回一个对象,所以我返回了自己加上另一个数字,在这种情况下是__iadd__
。
>>> class Adder(object): def __init__(self, num=0): self.num = num def __iadd__(self, other): print 'in __iadd__', other self.num = self.num + other return self.num >>> a = Adder(2) >>> a += 3 in __iadd__ 3 >>> a 5
希望这可以帮助。
+=
用variables的值添加另一个值,并将新值赋给variables。
>>> x = 3 >>> x += 2 >>> print x 5
-=
, *=
, /=
对于减法,乘法和除法也是类似的。
+=
将一个数字添加到一个variables中,改变过程中的variables本身(而+
不会)。 与此类似,还有以下内容也会修改variables:
-
-=
,从variables中减去一个值,将variables设置为结果 -
*=
,将variables和一个值相乘,使结果成为variables -
/=
,将variables除以该值,使结果成为variables -
%=
,对variables执行模数,然后将variables设置为它的结果
可能有其他的。 我不是一个Python程序员。
它在左边添加了正确的操作数。 x += 2
意味着x = x + 2
它也可以添加元素到列表 – 看到这个线程 。
这不是一个单纯的语法快捷方式。 尝试这个:
x=[] # empty list x += "something" # iterates over the string and appends to list print(x) # ['s', 'o', 'm', 'e', 't', 'h', 'i', 'n', 'g']
与
x=[] # empty list x = x + "something" # TypeError: can only concatenate list (not "str") to list
这说明+ =调用iadd列表方法,但是+调用add ,它们与列表做不同的事情。
x + = 5与Python中的x = x + 5不完全相同注意这里:
In [1]: x = [2,3,4] In [2]: y = x In [3]: x += 7,8,9 In [4]: x Out[4]: [2, 3, 4, 7, 8, 9] In [5]: y Out[5]: [2, 3, 4, 7, 8, 9] In [6]: x += [44,55] In [7]: x Out[7]: [2, 3, 4, 7, 8, 9, 44, 55] In [8]: y Out[8]: [2, 3, 4, 7, 8, 9, 44, 55] In [9]: x = x + [33,22] In [10]: x Out[10]: [2, 3, 4, 7, 8, 9, 44, 55, 33, 22] In [11]: y Out[11]: [2, 3, 4, 7, 8, 9, 44, 55]
看到这个: 为什么+ =在列表上意外行为?
+=
只是写作的捷径
numbers = 1 numbers = numbers + 1 print (numbers) ## 2
所以相反,你会写
numbers = 1 numbers += 1 print (numbers) ## 2
两种方法都是正确的,但是例子二可以帮助你less写一点代码
正如其他人所说,+ =运算符是一个捷径。 一个例子:
var = 1; var = var + 1; #var = 2
它也可以这样写:
var = 1; var += 1; #var = 2
所以,不要写第一个例子,你可以写第二个,这样可以很好地工作。
记住,当你用旧的计算器计算总和时,例如2和3,每次你input=
3,总计就增加了3, +=
也完成了类似的工作。 例:
>>> orange = 2 >>> orange += 3 >>> print(orange) 5 >>> orange +=3 >>> print(orange) 8