簡體   English   中英

你如何檢查一個變量是否引用了另一個在 Python 中聲明的 object?

[英]How do you check if a variable references another declared object in Python?

一個變量的打印類型只返回指向數據的類型

i = [5,6,7,8]
j = i
print(type(j))
<class 'list'>

j引用可變類型。 所以

j[0] = 3
print(i)
print(j)
[3, 6, 7, 8]
[3, 6, 7, 8]

我想要一個 function,它為j返回true ,為i返回false 如果它是內置的或者任何人都可以寫出它,我們將不勝感激。

Python 中沒有“指針”,就像 C++(或類似語言)中一樣。 Python 中的唯一區別是可變與不可變。 但是所有變量都只是對對象的引用。

具有不可變類型的變量指的是您無法修改,只能替換的值。 int是不可變類型的一個例子。

運行代碼時,將5分配給i ,然后將i的值分配給j ,這樣j現在也具有值5 ,但由於這些是不可變值,因此您只能更改任一變量的整個值,這不會影響另一個的價值。

具有可變類型的變量具有您可以修改的值。 list是可變類型的一個例子。

當你運行這個:

xs = [1, 2, 3]
ys = xs
xs[0] = 999

最后一條語句修改了兩個變量的值,因為作為xs值的列表與分配給ys的列表相同,最后一條指令修改了該值。

不可變類型包括數字、字符串和元組以及一些其他簡單類型。 可變類型包括列表、字典和大多數其他更復雜的類。

另外,例如看看這個:

a = 1
b = 1
c = b + 1
d = 2
print(id(a), id(b), id(c), id(d))

這將打印四個數字,但請注意前兩個數字將如何相同(因為它們都指向1 )而后兩個數字也相同(因為它們都指向2 )。

說了這么多,如果你想測試某些東西是否可變,沒有簡單的方法可以做到這一點 - 但想要這樣做的一個常見原因是因為你想測試某些東西是否可哈希,你可以測試:

s = 'test'
print(s.__hash__ is None)  # False


xs = [1, 2, 3]
print(xs.__hash__ is None)  # True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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