Dziś dowiedziałem się o is
słowo kluczowe w Pythonie i próbowałem następujące:Kiedy, jeśli w ogóle, użyć słowa kluczowego "is" w Pythonie?
>>> x=2+2
>>> y=4
>>> x is y
True
Zacząłem próbuje is
z liczb całkowitych, ponieważ wiedziałem, że odpowiedź byłaby False
- tak znalazłem wynik bardzo zaskakujące! Aby podać kontekst, moje tło to C++ i C#, gdzie istnieje rozróżnienie między typami wartości i typami obiektów. W Pythonie, jak teraz rozumiem, wszystko jest typem referencyjnym.
Wydaje się, że powód jest True
x is y
jest taka sama, jak wyjaśniono w tej kwestii, How is the 'is' keyword implemented in Python?, który odnosi się do korzystania is
z łańcuchów. To znaczy. środowisko wykonawcze zapisuje pamięć poprzez udostępnianie lub "wstawianie" liczb całkowitych dokładnie tak, jak ma to miejsce w przypadku łańcuchów - wyjaśniono to bardziej szczegółowo w odpowiedziach na pytanie: Python “is” operator behaves unexpectedly with integers Znalazłem po moim pierwszym wpisie.
Kolejną rzeczą, która mnie zaskakuje, jest to, że wartość zwracana przez is
zależy od implementacji. Co odnosi się do mojego głównego pytania. W zadanym pytaniu o implementację ciągów is
w.r.t była dyskusja na temat, kiedy należy użyć is
, przy czym kilku użytkowników twierdzi, że (prawie) nigdy z niego nie korzystali. Więc moje pytanie brzmi, kiedy powinno być użyte słowo kluczowe? Jakie są przykłady kanoniczne lub ogólne zasady?
pokrewne: http://stackoverflow.com/questions/13650293/python-is-operator – skamsie