python将变量i的值增加1_Python中变量自增、i+=x与i=i+x、is与==
這篇博客可能比較low bee,但是對于一個掌握了其他語言,剛剛學(xué)習(xí)Python的人來說,也許會有一點點的幫助。
在Cpp中,我們總是討論前綴自增和后綴自增的效率問題:
++i 是i=i+1,表達(dá)式的值就是i本身
i++ 也是i=i+1,但表達(dá)式的值是加1前的副本,由于要先保存副本,因此效率低一些。
那么我看python中的自增呢?
++i
>>> i=1
>>> ++i
1
i++
>>> i=1
>>> i++
File "", line 1
i++
^
SyntaxError: invalid syntax
解釋:
python中根本不存在自增,之所以++i還是i的值,因為這里的+是表示正數(shù)的意思:
>>> i=1
>>> +++++i
1
i+=x與i=i+x
這里二者的性能就不多討論了,我們只看特俗的情況:
>>> a = [1, 2, 3]
>>> b = a
>>> b += [1, 2, 3]
>>> a
[1, 2, 3, 1, 2, 3]
>>> b
[1, 2, 3, 1, 2, 3]
>>> a = [1, 2, 3]
>>> b = a
>>> b = b + [1, 2, 3]
>>> a
[1, 2, 3]
>>> b
[1, 2, 3, 1, 2, 3]
is與==
if x is y, then x==y is also True.
is compares for two objects in memory, == compares their values
“`cpp
a=1
b=1
a is b
True
a == b
True
再看這個你就明白了:
```cpp
>>> a=19998989890
>>> b=19998989889+1
>>> a is b
False
>>> a == b
True
那如果這樣呢:
>>> a=1
>>> b=1+0
>>> a is b
True
>>> a == b
True
這是什么鬼,這時候怎么是a is b了呢?
這就是Python中的效率問題了。
>>> a='hi'
>>> b='hi'
>>> a is b
True
>>> a==b
True
>>> a1='I am using long string for testing'
>>> b1='I am using long string for testing'
>>> a1 is b1
False
>>> a1 == b1
True
這就是Python的string interning: 也就是說,值相同的字符串對象只會保存一份,是共用的,這也決定了字符串必須是不可變對象。想一想,就跟數(shù)值類型一樣,相同的數(shù)值只要保存一份就行了,沒必要用不同對象來區(qū)分。
總結(jié)
以上是生活随笔為你收集整理的python将变量i的值增加1_Python中变量自增、i+=x与i=i+x、is与==的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中高阶函数和装饰器_三.Py
- 下一篇: python猴子补丁是什么_什么是Pyt