1 回答

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
每個(gè)定義的函數(shù)都有自己的命名空間。當(dāng)您退出函數(shù)(使用返回語句)時(shí),命名空間將被垃圾收集,并且不會(huì)執(zhí)行該函數(shù)的其他語句。
def func(a):
print(a)
b = a
#the return statement exits the function
return b
#the following statements will NOT be executed
a, b = 1,2
a, b = b+1, 5
#We call the function
y = func(1)
#Now y is 1
#You cen del y and it will become inaccessible
del y
#This will throw an error:
print(y)
Python 在內(nèi)部使用引用。當(dāng)聲明
y = 1
被執(zhí)行時(shí),Python 解釋器為值 1 保留內(nèi)存。然后它將引用分配給 1 的內(nèi)存位置。當(dāng)您分配另一個(gè)變量時(shí)
c = 1
它會(huì)將相同的引用分配給 c。您可以使用 id 函數(shù)驗(yàn)證這一點(diǎn)。
>>> id(c)
1234567
>>> id(y)
1234567
id(c) 和 id(y) 將返回相同的值,這意味著它們指向內(nèi)存中的相同位置。如您所見,python 解釋器將只在內(nèi)存中存儲(chǔ)一次不可變值。
添加回答
舉報(bào)