Python中的+=是什么意思?

12 投票
6 回答
157274 浏览
提问于 2025-04-15 11:24

我看到像这样的代码,举个例子是在Python里:

    if cnt > 0 and len(aStr) > 1:
        while cnt > 0:                  
            aStr = aStr[1:]+aStr[0]
            cnt += 1

那里面的 += 是什么意思呢?

6 个回答

7

在谷歌上搜索“python += 操作符”,你会找到这个链接 http://docs.python.org/library/operator.html

当页面加载完后,搜索一下“+=”,这样可以找到更详细的解释。

24
a += b

在这个情况下,是一样的

a = a + b

在这种情况下,cnt += 1 的意思是 cnt 增加了 1。

注意,如果 cnt 大于 0 并且 len(aStr) 大于 1,您粘贴的代码将会无限循环。

编辑:引用 Carl Meyer 的话:“[..] 这个答案在大部分情况下是误导性的,+ 和 += 之间有一个微妙但非常重要的区别,详见 Bastien 的回答。”

77

a += b 实际上和 a = a + b 是差不多的,主要有以下几点不同:

  • + 总是会返回一个新创建的对象,而 += 如果对象是可变的(比如 listdict),应该(但不一定)会直接在原对象上修改它。注意,像 intstr 这样的对象是不可变的。

  • a = a + b 这行代码中,a 会被计算两次。

  • Python: 简单语句

    • 简单语句是在一行逻辑上完整的代码。

如果你第一次看到 += 这个运算符,可能会好奇为什么它能直接修改对象而不是创建一个新对象这么重要。下面是一个例子:

# 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], [])

撰写回答