Warum ändert sich diese Einstellung s
? Es funktioniert nicht die gleiche Art und Weise für die ganze Zahl (bitweise) Version des gleichen Betreibers ....Warum setzt Python "& =" Operator anders als "& =" Integer-Operation?
Set Betrieb &=
(ändert s
):
s = set('abc')
t = set('bcd')
u=s
print u, s, t
u &= t
print u, s, t
Ergebnisse:
set(['a', 'c', 'b']) set(['a', 'c', 'b']) set(['c', 'b', 'd'])
set(['c', 'b']) set(['c', 'b']) set(['c', 'b', 'd'])
Bitweiser Betrieb &=
(ändert sich nicht s
):
s = 7
t = 3
u=s
print u, s, t
u &= t
print u, s, t
Ergebnis:
7 7 3
3 7 3
Sätze sind veränderbar und ganze Zahlen nicht. Probieren Sie es mit einem 'Frozenset'. – jonrsharpe
Es funktioniert wie erwartet mit frozensets. Daher versucht die Operation nicht, die Menge u (dasselbe Objekt wie s am Anfang der Anweisung) direkt zu ändern oder eine Ausnahme verursacht zu haben. Was versucht es zu tun? –
Listen zeigen dasselbe Verhalten wie Sets für & =. Tupel verursachen einen TypeError. –