Odpowiedź Martijna wyjaśnia, co Nonejest w Pythonie i poprawnie stwierdza, że książka wprowadza w błąd. Ponieważ programiści Pythona z reguły nigdy by tego nie powiedzieli
Przypisanie wartości Nonezmiennej jest jednym ze sposobów przywrócenia jej do pierwotnego, pustego stanu.
Trudno jest wyjaśnić, co ma na myśli Briggs w sposób, który ma sens i wyjaśnia, dlaczego nikt tutaj nie wydaje się być z tego zadowolony. Jedna analogia, która może pomóc:
W Pythonie nazwy zmiennych są jak naklejki nakładane na obiekty. Każda naklejka ma wypisaną unikalną nazwę i może znajdować się tylko na jednym przedmiocie naraz, ale możesz umieścić więcej niż jedną naklejkę na tym samym przedmiocie, jeśli chcesz. Kiedy piszesz
F = "fork"
umieszczasz naklejkę "F" na obiekcie typu string "fork". Jeśli napiszesz
F = None
przesuwasz naklejkę na Noneobiekt.
Co Briggs prosi cię do wyobrażenia jest, aby nie pisać naklejkę "F", nie było jużF naklejki na None, a wszystko co robił było przenieść go od Nonedo"fork" . Więc kiedy piszesz F = None, „resetujesz [ting] do pierwotnego, pustego stanu”, jeśli zdecydowaliśmy się traktować to Nonejako znaczenie empty state.
Widzę, do czego zmierza, ale to zły sposób patrzenia na to. Jeśli uruchomisz Pythona i wpiszeszprint(F) , zobaczysz
>>> print(F)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'F' is not defined
a to NameErroroznacza, że Python nie rozpoznaje nazwy F, ponieważ nie ma takiej naklejki . Jeśli Briggs miał rację i F = Noneresetuje sięF do swojego pierwotnego stanu, to powinien tam być teraz i powinniśmy zobaczyć
>>> print(F)
None
tak jak robimy to po wpisaniu F = Nonei naklejeniu naklejkiNone .
Więc to wszystko, co się dzieje. W rzeczywistości Python zawiera kilka naklejek już dołączonych do obiektów (wbudowane nazwy), ale inne musisz napisać samemu liniami takimi jak F = "fork"i A = 2i c17 = 3.14, a następnie możesz przykleić je później na innych obiektach (np.F = 10 Lub F = None; to wszystko to samo .)
Briggs udaje, że wszystkie możliwe naklejki, które chciałbyś napisać, zostały już przyklejone do Noneobiektu.
Nonenie jest domyślnym pustym stanem dla zmiennych.