Heim  >  Artikel  >  Backend-Entwicklung  >  Ist die Set-Sammlung in Python ein Variablentyp?

Ist die Set-Sammlung in Python ein Variablentyp?

anonymity
anonymityOriginal
2019-06-13 09:36:227055Durchsuche

Was ist ein veränderliches/unveränderliches Objekt?

Unveränderliches Objekt, der Wert im Speicher, auf den das Objekt zeigt, kann nicht geändert werden. Wenn eine Variable geändert wird, entspricht dies dem Kopieren und anschließenden Ändern des ursprünglichen Werts, da der Wert, auf den sie zeigt, nicht geändert werden kann. Dadurch wird eine neue Adresse geöffnet, und die Variable zeigt auf diese neue Adresse.

Variables Objekt, der Wert im Speicher, auf den dieses Objekt zeigt, kann geändert werden. Wenn eine Variable (genauer gesagt eine Referenz) geändert wird, wird der Wert, auf den sie sich bezieht, direkt geändert. Es erfolgt kein Kopieren und es wird keine neue Adresse geöffnet.

Ist die Set-Sammlung in Python ein Variablentyp?

In Python sind numerische Typen (int und float), string str und tuple tuple allesamt unveränderliche Typen. Listen, Wörterbücher und Mengen sind Variablentypen.

Es ist intuitiver, sich den Code anzusehen Sehen Sie sich den Code der Set-Sammlung an:

abb = {1, 2, 3}
acc = abb
print(id(abb), id(acc))
acc.add(4)
print(abb)  # {1, 2, 3, 4} 
print(id(abb), id(acc)) # 相等

Variable Objekte können geändert werden, weil Das Objekt, auf das verwiesen wird, kann geändert werden, sodass keine Kopie erstellt und dann geändert werden muss. Ändern Sie es einfach an Ort und Stelle, sodass kein neuer Speicher geöffnet wird und die ID vor und nach der Änderung unverändert bleibt.

Natürlich ist dies bei unveränderlichen Objekten nicht der Fall. Sie können es damit vergleichen

abc = 3
dd = abc
dd = 43
print(abc)  # 3,并不随dd的改变而改变

Aber wenn es eine Kopie ist, kopiert es nur den Inhalt und überträgt ihn nicht es ohne Referenz. Dies ist besonders nützlich, wenn Sie die Werte einer Liste verwenden möchten, ohne die ursprüngliche Liste zu ändern.

blist = alist[:]  # or alist.copy()
print(alist is blist)  # False
blist.append(4)
print(alist)  # 还是[1,2 ,3]没有变化

Das obige ist der detaillierte Inhalt vonIst die Set-Sammlung in Python ein Variablentyp?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn