Python中的+ =是什么意思?

11 python syntax

我在Python中看到这样的代码:

    if cnt > 0 and len(aStr) > 1:
        while cnt > 0:                  
            aStr = aStr[1:]+aStr[0]
            cnt += 1
Run Code Online (Sandbox Code Playgroud)

什么+=意思?

Bas*_*ard 73

a += b基本上是相同的a = a + b,除了:

  • +总是返回一个新分配的对象,但+=应该(但并不一定)修改就地对象,如果它是可变的(例如,list或者dict,但intstr是不可变的).
  • a = a + b,a评估两次.

http://docs.python.org/reference/simple_stmts.html#augmented-assignment-statements


如果这是您第一次遇到+=操作员,您可能想知道为什么重要的是它可以就地修改对象而不是构建新对象.这是一个例子:

# two variables referring to the same list
>>> list1 = []
>>> list2 = list1

# += modifies the object pointed to by list1 and list2
>>> list1 += [0]
>>> list1, list2
([0], [0])

# + creates a new, independent object
>>> list1 = []
>>> list2 = list1
>>> list1 = list1 + [0]
>>> list1, list2
([0], [])
Run Code Online (Sandbox Code Playgroud)

  • @Rafal:很明显,如果一个对象不支持+ =,就不会发生就地修改:-)微妙的一点就是不能保证支持+ =的可变对象会进行就地修改 - 谨慎的代码会避免依赖于此,除非明确记录. (3认同)
  • 次要更正:如果对象支持__iadd __()方法,则会发生就地修改,而不是它是可变的.特别是,字典不支持`+ =`. (2认同)

Ste*_*202 25

a += b
Run Code Online (Sandbox Code Playgroud)

在这种情况下一样

a = a + b
Run Code Online (Sandbox Code Playgroud)

在这种情况下,cnt + = 1意味着cnt增加1.

请注意,如果cnt> 0且len(aStr)> 1,则粘贴的代码将无限循环.

编辑:引用Carl Meyer:``[..]答案误导性大多是正确的.+和+ =之间存在微妙但非常显着的差异,请参阅Bastien的答案.''.

  • @ Stephan202 + = 1 (2认同)

Gis*_*shu 8

Google'python + = operator'会引导您访问http://docs.python.org/library/operator.html

在页面加载后搜索+ =以获得更详细的答案.

  • 让他回来'是什么 - =?' '什么是*=?' :) 不用了,谢谢.无论如何,在我发布之前,最高投票的人已经做过了. (5认同)
  • +1 表示提供链接(有帮助),但 -1 表示不总结,您可以用一句话完成。净值:0 (2认同)