W porównaniu do języków takich jak Perl, Python ma ograniczoną liczbę konstrukcji kontrolnych:
- tylko
if
i nie unless
,
- tylko
for
że iteracje nad sekwencjami i brak foreach
lub C-stylu for
,
- tylko
while
to sprawdza warunek w każdej pętli i nie do-while
,
- tylko
if-elif
i nie switch
,
- istnieje tylko jedna konstrukcja komentarza
#
, a dla każdej linii można stwierdzić, czy jest komentowana, czy nie, bez patrzenia na poprzednie linie.
Ponadto istnieje prawie jeden sposób na wcięcie źródła; większość przypadków twórczego wcięcia jest syntaktycznie wykluczona.
To sprawia, że parsowanie źródła Python jest łatwiejsze dla ludzi.
Próbuje się być minimalnym, ale kompletnym we wbudowanych typach i standardowej bibliotece.
- dla listy zmiennych można użyć jedynego wbudowanego
list
typu; jest to O (1) dla większości operacji i nigdy nie musisz wybierać właściwej implementacji,
- w przypadku niezmiennych listów po prostu używasz tego
tuple
typu,
- w przypadku map korzystasz z jedynego wbudowanego,
dict
który jest cholernie wydajny w większości przypadków, nie musisz zastanawiać się, którą implementację zastosować.
Python 3 rozszerza to na liczby całkowite: bez względu na to, jak duża jest twoja liczba całkowita, używasz tego samego typu i nigdy nie dbasz o przymus.
Python próbuje uniknąć cukru syntaktycznego. Ale czasami dodaje cukier syntaktyczny, aby oczywisty sposób był oczywisty. Możesz pisać if foo is not None
zamiast tego, if not (foo is None)
ponieważ „nie jest” jest w specjalnej obudowie. Nadal foo is not None
czyta łatwo, nie można go źle interpretować i nie musisz myśleć, po prostu piszesz oczywiste rzeczy.
Oczywiście większość bardziej złożonych rzeczy w Pythonie można wykonać na kilka sposobów. Możesz dodawać metody do klas poprzez deklarację lub proste przypisanie szczelin, możesz przekazywać argumenty do funkcji na wiele kreatywnych sposobów itp. To tylko dlatego, że wewnętrzne elementy języka są w większości odsłonięte.
Kluczem jest to, że zawsze istnieje jeden sposób, który ma być najlepszy, obejmujący wszystko. Jeśli istnieją inne sposoby, nie zostały one dodane jako równe alternatywy (jak if
i unless
), a jedynie ujawniają wewnętrzne funkcjonowanie. Powoli, ale konsekwentnie, takie alternatywy są przestarzałe (nie wyeliminowane!) Poprzez ulepszenie znanego najlepszego mechanizmu.
Dekoratorzy zawijają wywołania funkcji AOP. Przed wersją 2.6 musiałeś użyć __metaclass__
członka magii, aby zadeklarować metaklasę klasy; teraz możesz również użyć do tego tej samej składni dekoratora. Przed wersją 3.0 istniały dwa rodzaje ciągów, zorientowane na bajty i Unicode, które można przypadkowo zmiksować. Teraz masz jedyny Unicode str
i jedyny binarny bytes
, którego nie można pomyłkowo wymieszać.
"""
komentarzach (dokumentach). Obejmują one wiele linii.