Python常量池


在python里,有一個神奇的機制:常量池

Python 內部做了一些優化,Python把常用的整數對象都預先緩存起來

特點:

  1.整數范圍: -5 -- 257

  2.它永遠不會被GC機制回收, 只要定義的整數變量在 范圍: -5  --  256內,會被全局解釋器重復使用, 257除外

  3.只要在這個 -5  --  256 范圍內,創建同一區域代碼塊的變量的值如果是相等的,那么不會創建新對象(python萬物皆對象,數值也是對象),直接引用。

一:

a = 123
b = 123
print(id(a)) >>> 1744793632
print(id(b)) >>> 1744793632 

二:

def test_a():
    a = 123
    print(id(a))


def test_b():
    b = 123
    print(id(b))

c = 123 
print(id(c)) >> 1744793632 test_a() >>>
1744793632
test_b() >>> 1744793632

三:奇葩的257

 
         
def test_a():
a = 257
b = 257
print(id(a)) # 1872078405424
print(id(b)) # 1872078405424


num1 = 257
num2 = 257
print(id(num1)) # 1872077827792
print(id(num2)) # 1872077827792
test_a()

257 這個整數對象是區分作用域的,它只有在相同的作用域, 內存地址才會相同

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM