[英]Objects having same name refer to different id in python
在下面的代碼段中,在第1行和第2行創建了兩個名為div
對象。
python如何區分在相同作用域下創建的兩個div
對象?
將id()
應用於兩個對象時,將為相似的命名對象顯示兩個不同的地址。 為什么會這樣呢?
def div(a,b):
return a/b
print(id(div)) # id = 199......1640 ################################ line 1
def smart_div(func):
def inner(a,b):
if a<b:
a,b=b,a
return func(a,b)
return inner
a = int(input("Enter 1st: "))
b = int(input("Enter 2nd: "))
div = smart_div(div)
print(id(div)) # id = 199......3224 ############################# line 2
print(div(a,b))
在像C這樣的傳統語言中,不能在相同范圍內創建兩個具有相同名稱的變量。 但是,在python中,此規則似乎不適用。
在像C這樣的語言中,您可以使用不同的值重命名變量。 這就是您更新值的方式。 在C語言中,它們必須具有相同的類型,因為C是一種靜態類型的語言。 另一方面,Python是動態類型的,這意味着它不會跟蹤類型。 在程序中,有一個表,其中名稱與值相關聯,並且當您在相同范圍內將div
定義為新值時,它只是覆蓋了該值,因為第二個div
稍后出現。 定義新的div
值后,您將無法再訪問函數div
。
在Python中,所有東西(基本上)都是一個對象,它確實允許重用變量名。
因此,我相信您所做的是將變量名div
從指向函數的名稱重新分配給指向函數smart_div
的指針。
您應該看到您無法訪問舊的div函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.