Lexikalische Einheiten und Leerraum in Python
Ein Numerale, wie das Literal »32«, besteht zwar aus zwei Zeichen, stellt aber eine einzige Einheit (ein bestimmtes Numerale) dar. Solche Schreibweisen werden auch oder lexikalische Einheiten genannt.
Fast jeder Operator und jedes Literal gilt als jeweils eine lexikalische Einheit.
Ausnahmsweise besteht der Klammeroperator aus zwei lexikalischen Einheiten (jede Klammer gilt als eine lexikalische Einheit).
- die bisher behandelten lexikalischen Einheiten
lexikalische Einheit
.----------.
|-|---.--->| Literal |---.--->|-|
| '----------' ^
| .----------. |
'--->| Operator |---'
'----------'- Beispiele lexikalischer Einheiten
'abc'
65
2.3
(
)
Die Zeichen »(«, »)« und das Numerale »2« sind beide jeweils eine lexikalische Einheit. Der Quelltext »( 2 )« besteht also aus drei direkt aufeinanderfolgenden lexikalischen Einheiten.
Das Leerzeichen
Die Lücke, die man in deutschsprachigen Texten zwischen zwei Wörtern macht, wird Leerzeichen genannt.
Wenn ein Leerzeichen einmal besonders sichtbar gemacht werden soll, wird es auch als »␣« geschrieben. (Diese Schreibweise kann allerdings nicht in Python verwendet werden.)
Vergrößerte Darstellung eines sichtbar gemachten Leerzeichens
| |
'-------------------'
Leerzeichen zwischen lexikalischen Einheiten
Vor oder hinter eine lexikalische Einheit darf immer ein Leerzeichen eingefügt werden, ohne daß dies die Bedeutung eines Quelltextes ändert.
Zwischen die lexikalischen Einheiten »(«, »2« und »)« darf also ein Leerzeichen eingefügt werden, dieses ist aber nicht nötig. Da ein Operator ja keine Ziffern enthalten kann, ist es klar, daß mit der Ziffer »2« eine neue lexikalische Einheit beginnen muß. Es spielt also keine Rolle, ob man ohne Leerzeichen »(2)« oder mit Leerzeichen »( 2 )« schreibt.
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
(2)
2
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
( 2 )
2
Rückblende Wir hatte bereits den Begriff „Refaktor“ für Änderungen des Quelltextes kennengelernt, welche die Korrektheit eines Programms nicht antasten. Das eben gezeigt Einfügen von Leerraum ist ebenfalls solch ein Refaktor.
Das Leerzeichen innerhalb lexikalischer Einheiten
In eine lexikalische Einheit darf kein Leerzeichen eingefügt werden (in dem Sinnen, daß dies zu einer Fehlermeldung oder wenigstens einer anderen Bedeutung des Quelltextes führen würde). Das Numerale »65« darf also nicht als »6 5« geschrieben werden.
- Auswertungsversuch (übersetzt und gekürzt)
6 5
Syntax-Fehler
Einfügen eines Leerzeichens in ein Zeichenfolgenliteral führt nicht zu einer Fehlermeldung, aber zu einer entsprechend veränderten Zeichenfolge.
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
'ab'
'ab'
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
'a b'
'a b'
Leerraum
Mehrere aufeinanderfolgende Leerzeichen haben zwischen lexikalischen Einheiten keine andere Bedeutung als ein einzelnes Leerzeichen.
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
(2 )
2
Wir bezeichnen ein Leerzeichen oder eine Folge aufeinanderfolgende Leerzeichen zwischen lexikalischen Einheiten auch als Leerraum.
Leerraum gilt nicht als lexikalische Einheit. (Er kann vor oder nach lexikalischen Einheiten stehen.)
Einrückungen
Wenn ein Zeile mit Leerzeichen beginnt, sagt man sie sei eingerückt, weil das Hinzufügen von Leerzeichen an den Zeilenanfang als Einrücken der Zeile bezeichnet wird, und nennt den Leerraum am Zeilenanfang auch Einrückung.
Eine Einrückung hat in Python eine besondere Bedeutung, welche in wir erst später behandeln werden. Vorerst können wir uns merken, daß wir keine Einrückung schreiben, weil wir deren Bedeutung noch nicht behandelt haben.
In vielen Fällen führt eine Einrückung auf zu einer Fehlermeldung.
- Auswertungsversuch (übersetzt und gekürzt)
(2)
Einrückungsfehler
Das Zeilenende
Zeilenenden an Stelle eines Leerzeichens sind innerhalb von Klammern zulässig. Dort sind auch Leerzeichen am Zeilenanfang erlaubt.
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
(
2
)2
Übungsfragen
? Lexikalische Einheiten zählen
Wie viele lexikalische Einheiten finden sich in dem folgenden Quelltext?
- Quelltext
(32)
? Lexikalische Einheiten zählen (1)
Wie viele lexikalische Einheiten finden sich in dem folgenden Quelltext?
- Quelltext
( 32)
Quellen *
- Quelle
- The Python Language Reference Release 3.6.0, 2.1.9 Whitespace between tokens