Dlaczego ta ustawiona zmiana operacji została ustawiona na s
? To nie działa w ten sam sposób za całkowitą (bitowe) wersji tego samego operatora ....Dlaczego operator setu "& =" Pythona działa inaczej niż operacja typu "+ ="?
Set Operacja &=
(zmienia s
):
s = set('abc')
t = set('bcd')
u=s
print u, s, t
u &= t
print u, s, t
Wyniki:
set(['a', 'c', 'b']) set(['a', 'c', 'b']) set(['c', 'b', 'd'])
set(['c', 'b']) set(['c', 'b']) set(['c', 'b', 'd'])
Bitowa operacja &=
(nie zmienia się s
):
s = 7
t = 3
u=s
print u, s, t
u &= t
print u, s, t
Wynik:
7 7 3
3 7 3
Zestawy są zmienne, a liczby całkowite nie są. Spróbuj z 'zamrożonym zestawem'. – jonrsharpe
Działa zgodnie z oczekiwaniami z frozensets. Tak więc operacja nie próbuje zmodyfikować zestawu u (ten sam obiekt, co s na początku instrukcji) w miejscu lub spowodowałby wyjątek. Co próbuje zrobić? –
Listy przedstawiają to samo zachowanie, co zestawy dla & =. Krotki powodują TypeError. –