Python “++” operator doesn't work
Possible Duplicate:
Python: Behaviour of increment and decrement operators
嗨,我试过了。
num根本不改变,初始化时总是显示值
如果我把++num改成num+=1,它就会工作。
所以,我的问题是,那个++操作符是如何工作的?
- 我不认为有必要否决这个问题。这是一个副本,适当的行动是结束而不是否决。
- 不管用吗?是什么让你觉得它存在?你在读什么教程?你在哪里看到的?
- @洛特:你可以开始对python大刀阔斧,认为它就在那里,因为其他几种语言都有。如果您只是编写一些函数,并尝试使用++x作为增量,那么它不会抛出任何错误,只会被悄悄地破坏。
- @尼克T:"刺杀Python"和"思考"不属于同一句话。这是一个非常非常糟糕的问题。它还提到了那些试图通过"刺杀"来学习语言的人的坏处。事实上,想到人们真的做了这样的事,我深感悲痛。阅读具有一切优势。它比刺杀快。而这种糟糕的假设的机会就更少了。
python中没有++操作符。对变量应用一元+两次。
答:python中没有++操作符。+= 1是增加数字的正确方法,但请注意,由于整数和浮点数在python中是不可变的,
1 2 3 4 5 6 7
| >>> a = 2
>>> b = a
>>> a += 2
>>> b
2
>>> a
4 |
此行为与可变对象不同,其中b在操作后也会发生更改:
1 2 3 4 5 6 7
| >>> a = [1]
>>> b = a
>>> a += [2]
>>> b
[1, 2]
>>> a
[1, 2] |
- 我看不出您所展示的+=行为与任何其他语言有什么不同,它使用一个+=操作符将x += c转换为x = x + c,即使类型是可变的,+=总是创建一个新的实例而不是可变的。
- +1比用更快的扳机指的人更有用。
- @达维8:如果一个新对象是可变的,那么它就不会生成新对象——只有当它不是可变的时候。
- 有趣…所以在python中,x += y不转换为x = x + y。这对我来说似乎是违反直觉的,但我还没有被它咬过。
- 你是对的,我刚测试过。如果我做a += [2],那么我得到描述的结果,但是如果我做a = a + [2],那么b仍然是[1],a是[1, 2]。
- 我不理解这个示例如何演示整数不变性。如果我在C中用它可能可变的整数来做int a, b; a = 2; b = a; a += 2,我得到完全相同的结果。
- 实际上,如果x是__add__过载而不是__iadd__过载的对象,那么x += y可以转换为x = x + y。
- @尼克:在Python中,实际上每个对象都是一个引用。它不同于C。
- 如果它透明地工作相同,它有什么不同?是的,我可以在C代码中使用指针,但是变量的"默认"机制的功能类似。