什么是+;=用Python是什么意思?
我在Python中看到这样的代码示例:什么是+;=用Python是什么意思?,python,syntax,Python,Syntax,我在Python中看到这样的代码示例: if cnt > 0 and len(aStr) > 1: while cnt > 0: aStr = aStr[1:]+aStr[0] cnt += 1 +=是什么意思 a += b 在这种情况下与 a = a + b 在这种情况下,cnt+=1意味着cnt增加1 请注意,如果cnt>0且len(aStr)>1,则粘贴的代码
if cnt > 0 and len(aStr) > 1:
while cnt > 0:
aStr = aStr[1:]+aStr[0]
cnt += 1
+=
是什么意思
a += b
在这种情况下与
a = a + b
在这种情况下,cnt+=1意味着cnt增加1
请注意,如果cnt>0且len(aStr)>1,则粘贴的代码将无限循环
编辑:引用:``[…]答案几乎正确,令人误解。+和+=之间存在细微但非常显著的差异,请参见“.”。它的意思是“将此”附加到当前值上”
例如:
a=“你好”;
a+=“世界”
现在打印一个将输出:“hello world”仅供参考:在您的示例中,似乎有一个无限循环
if cnt > 0 and len(aStr) > 1:
while cnt > 0:
aStr = aStr[1:]+aStr[0]
cnt += 1
- 进入循环的条件是
大于0cnt
- 只要
大于0,循环就会继续运行cnt
- 循环的每次迭代将
增加1cnt
最终结果是,
cnt
将始终大于0,循环将永远不会退出。Google'python+=operator'引导您
页面加载后搜索+=以获得更详细的答案。
a+=b
基本上与a=a+b
相同,只是:
总是返回一个新分配的对象,但是如果对象是可变的(例如,+
或list
,但是dict
和int
是不可变的),则str
应该(但不必)修改该对象+=
- 在
中,a=a+b
计算两次a
-
- 一个简单语句包含在一个逻辑行中
如果这是您第一次遇到
+=
操作符,您可能想知道为什么它可能会在适当的位置修改对象,而不是构建一个新的对象。以下是一个例子:
# 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], [])
+=
是最重要的
这与执行cnt=cnt+1
相同。例如:
>>> cnt = 0
>>> cnt += 2
>>> print cnt
2
>>> cnt += 42
>>> print cnt
44
>>> s = "Hi"
>>> s += " there"
>>> print s
Hi there
运算符的使用方式通常与C-ish语言中的++
运算符类似,用于在循环中将变量增加1(i+=1
)
对于减法/乘法/除法/幂和其他运算,也有类似的运算符:
i -= 1 # same as i = i - 1
i *= 2 # i = i * 2
i /= 3 # i = i / 3
i **= 4 # i = i ** 4
+=
运算符也适用于字符串,例如:
>>> cnt = 0
>>> cnt += 2
>>> print cnt
2
>>> cnt += 42
>>> print cnt
44
>>> s = "Hi"
>>> s += " there"
>>> print s
Hi there
出于性能原因,人们倾向于建议不要这样做,但对于大多数脚本来说,这并不是一个问题。引自:
mysentence = []
for x in range(100):
mysentence.append("test")
" ".join(mysentence)
…而不是更明显的:
mysentence = ""
for x in range(100):
mysentence += " test"
后者的问题是(除了前导空格之外),根据Python实现,Python解释器必须在每次追加时在内存中创建一个新的字符串副本(因为字符串是不可变的),这将随着要追加的字符串的长度而逐渐变慢。。然而,附加到一个列表,然后将其连接到一个字符串是一种一致的速度(无论实现如何)
如果你在做基本的字符串操作,不用担心。如果你看到一个基本上只是添加到一个字符串的循环,考虑构建一个数组,然后<代码>“.Co())/代码>它。不一定是永远的。如果CNT是int,它最终会溢出并变为负数,所以如果你在32位INT的机器上,循环将在几十亿次迭代之后最终退出。(或者,如果你在一台64位整数的机器上,在宇宙热死的某个时候。)@Charlie:Python会自动处理溢出。使用Python 2.5:sys.maxint+1==2147483648L和isinstance(sys.maxint+1,int)==False进行测试。在Python 3.0中,int和long之间的区别甚至消失了(不再是long,int是“bignum”)。(显然,在64位上,我们有sys.maxint+1==9223372036854775808L,但关键是结果会自动转换为long)或者你可以告诉他这意味着a=a+乐队让他回来问‘what is-=?’what is*=?’:)不,谢谢。不管怎样,在我发布之前,排名靠前的ans已经这么做了。+1用于提供链接(有帮助),但-1表示你没有总结,这本可以用一句话来完成。Net:0这对我也很有帮助。谢谢。它也适用于其他运算符。你可以做x-=1;y*=3;z/=10;cnt+=1;可以认为比cnt=cnt+1更整洁;在这里输入错误的空间更大;)@S.Lott:否决票意味着答案没有帮助,就是这个。你投了否决票,只是因为他没有链接到文档?-1因为答案大多是正确的。+和+=之间有一个微妙但非常显著的区别,请看巴斯蒂安的回答。看在撒旦的份上,请不要用这个来构建字符串。StringIO和cStringIO就是为了这个目的而出现的。构建字符串:“”。join(可扩展的字符串中的\u)也可以很好地执行。它意味着在字符串上使用append。。“”.join()的性能更好,但将其用于示例中的短字符串是愚蠢的。在循环中连接字符串时使用“.join()”,但对于其中一种用法,+=是精细的小更正:如果对象支持_iadd _;()方法,而不是可变方法,则会发生就地修改。特别是,字典不支持
+=
@Rafal:很明显,如果一个对象不支持+=,就地修改就不会发生:-)微妙的一点是,不能保证一个支持+=的可变对象会进行就地修改-小心的代码会避免r