簡體   English   中英

具有相同名稱的對象在python中引用了不同的id

[英]Objects having same name refer to different id in python

在下面的代碼段中,在第1行和第2行創建了兩個名為div對象。

  1. python如何區分在相同作用域下創建的兩個div對象?

  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM