原文地址:http://blog.csdn.net/guang09080908/article/details/47273775(侵刪)
- 這兩天看了一些網上各大互聯網公司的面試題,發現騰訊特別喜歡考察++和–以及移位運算相關的內容。C++相對來說還是比較熟悉的,對於這類問題只要記住運算符的優先級一般問題不大。由於也會經常用Python,突然覺得Python中為什么沒有自增自減運算符呢?
- 比如python中有x += y這種形式的表達式,但是沒有x++這樣的。查了一些資料,發現+=是代表改變了變量,相當於重新生成了一個變量,把操作后的結果賦予這個新生成的變量。但是++的話代表改變了對象本身,注意是對象本省,而不是變量本身。這個對象指的是內存中存放基本類型的數據的地址所指的內容。而Python的模型規定,數值對象是不可改變的。
- 比如下面這個例子:
>>> b = 5 >>> a = 5 >>> id(a) 162334512 >>> id(b) 162334512 >>> a is b True
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- int理論上是每次賦值都創建一個新對象的。但是由於使用頻繁,為了提升性能避免浪費,所有python有個 整數池,默認1~256的數字都屬於這個整數池,這些每次賦值的時候,是取得池中的整數對象。但是其他的除外,如下所示:
>>> a = 257 >>> b = 257 >>> id(a) 140397570652784 >>> id(b) 140397570652736