Im Vergleich zu Sprachen wie Perl verfügt Python über eine begrenzte Anzahl von Steuerungskonstrukten:
- nur
if
und nein unless
,
- nur,
for
dass über Sequenzen iteriert und keine foreach
oder C-Stil for
,
- nur
while
das prüft eine Bedingung jede Schleife und nein do-while
,
- nur
if-elif
und nein switch
,
- Es gibt nur ein Kommentar-Konstrukt, das
#
, und für jede Zeile können Sie feststellen, ob sie auskommentiert ist oder nicht, ohne vorhergehende Zeilen zu betrachten.
Es gibt auch fast eine Möglichkeit, Ihre Quelle einzurücken. Die meisten Fälle von kreativen Einrückungen werden syntaktisch ausgeschlossen.
Dies erleichtert dem Menschen das Parsen einer Python-Quelle.
Es gibt Versuche, in integrierten Typen und in der Standardbibliothek minimal, aber vollständig zu sein.
- Für veränderbare Listen verwenden Sie den einzigen integrierten
list
Typ. es ist O (1) für die meisten Operationen, und Sie müssen nie die richtige Implementierung wählen,
- für unveränderliche Listen verwenden Sie ebenfalls nur den
tuple
Typ,
- Für Karten verwenden Sie die einzige integrierte Funktion,
dict
die in den meisten Fällen verdammt effizient ist. Sie müssen nicht überlegen, welche Implementierung verwendet werden soll.
Python 3 erweitert dies auf Ganzzahlen: Egal wie groß Ihre Ganzzahl ist, Sie verwenden denselben Typ und kümmern sich nie um Zwang.
Python versucht, syntaktischen Zucker zu vermeiden. Aber manchmal wird syntaktischer Zucker hinzugefügt, um den offensichtlichen Weg zu verdeutlichen. Sie können schreiben, if foo is not None
anstatt zu schreiben, if not (foo is None)
weil "nicht" ein Sonderfall ist. Noch foo is not None
liest leicht, nicht falsch interpretiert werden kann, und Sie müssen nicht denken, schreiben Sie einfach die offensichtliche Sache.
Natürlich, die meisten von komplexeren Dinge in Python kann auf verschiedene Weise erfolgen. Sie können Klassen Methoden durch Deklaration oder durch einfache Zuweisung von Slots hinzufügen, Sie können Argumente auf verschiedene kreative Arten an Funktionen übergeben usw. Dies liegt nur daran, dass die Interna der Sprache meistens offengelegt werden.
Der Schlüssel ist, dass es immer einen Weg gibt, der der beste sein soll, den allumfassenden Fall. Wenn es andere Möglichkeiten gibt, wurden sie nicht als gleichwertige Alternativen hinzugefügt (wie if
und unless
), sondern legen lediglich das Innenleben offen. Langsam aber stetig werden solche Alternativen durch die Verbesserung des bekannten besten Mechanismus überholt (nicht beseitigt!).
Dekorateure schließen AOP-Funktionsaufrufe ab. Vor 2.6 mussten Sie __metaclass__
magic member verwenden, um die Metaklasse einer Klasse zu deklarieren. Jetzt können Sie auch hier die gleiche Decorator-Syntax verwenden. Vor 3.0 hatten Sie zwei Arten von Zeichenfolgen, byteorientiert und Unicode, die Sie versehentlich mischen konnten. Jetzt haben Sie den einzigen Unicode str
und den einzigen binären transparenten Code bytes
, den Sie nicht versehentlich mischen können.
"""
Kommentare (docstrings). Diese erstrecken sich über mehrere Zeilen.