[英]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.