Übersicht
Anweisungen, die zu einem Block gehören, etwa nach if, müssen gleich weit eingerückt werden; empfohlen werden 4 Leerzeichen pro Ebene. Jede Anweisung, die einen Anweisungsblock einleitet, endet mit einem Doppelpunkt.
Beispiel:
if Bedingung:
x = 999
else:
x = 0
Namen
[Bearbeiten]- Zulässige Zeichen für Namen (Variable, Funktionen, Datentypen usw.) sind Buchstaben, Ziffern und der Unterstrich
_; - Namen dürfen nicht mit einer Ziffer beginnen.
- Groß- und Kleinschreibung wird unterschieden.
Leere Anweisung
[Bearbeiten]An Stellen, an denen zumindest eine Anweisung stehen muss, kann auch das Schlüsselwort pass für die leere Anweisung verwendet werden.
Das Kommentarzeichen ist #; der Kommentar endet mit dem Zeilenende.
Mehrzeilige Kommentare beginnen und enden mit """.
Variable werden definiert, indem man ihnen einen Wert bzw. Objekt zuweist. Der Typ einer Variablen wird durch den Ausdruck rechts des Zuweisungsoperators (=) bestimmt.
Konstanten
[Bearbeiten]Symbolische Konstanten gibt es in Python nicht; stattdessen gibt es eine Namenskonvention, Namen von Variablen, deren Wert nach der Initialisierung nicht mehr geändert werden soll, in Großbuchstaben zu schreiben.
| Typ | Kurzbeschreibung | Beispiele für Literale | Konstruktor und Konvertierungsfunktion |
Zugriff auf einzelnes Element |
|---|---|---|---|---|
| bool | Wahrheitswerte | True, False | bool() | n. a. |
| int | Ganzzahlen beliebiger Größe | 0, -123456789 | int() | n. a. |
| float | Gleitkommazahlen | 0.0, 1.987, 1e10, .35 | float() | n. a. |
| complex | komplexe Zahlen | 0+0j, 1j | complex() | x.real, x.imag (Attribute) |
| str | Strings | "", "text" | str() | x[index] |
| list | Listen beliebiger Objekte, veränderbar | [], [1, 2, ""] | list() | x[index] |
| tuple | Tupel beliebiger Objekte, nicht veränderbar | (), (1,), (1, 2) | tuple() | x[index] |
| set | Mengen | {1, 2, 3} | set() | n. a. |
| dict | assoziative Felder (Schlüssel-Wert-Paare) | {} | dict() | x[key] |
| range | iterierbare Folge ganzer Zahlen, insbesondere für Schleifen | range(10) | siehe for-Schleife | x[index] |
Strings werden in " oder ' eingeschlossen, \" bzw. \' stehen für Anführungszeichen im String. Nicht druckbare Zeichen werden mit \ dargestellt, Beispiele: \n (neue Zeile), \t (Tabulator); der Backslash selbst wird als \\ dargestellt bzw. eingegeben.
Mehrzeilige Strings beginnen und enden mit """.
Wenn r vor dem Anführungszeichen steht, bleiben Backslashes erhalten, werden also nicht als Beginn einer Escape-Sequenz interpretiert. Am Ende kann keine ungerade Anzahl von Backslashs stehen, ein Backslash kann aber mit + "\\" angehängt werden.
Raw-Strings sind dann besonders nützlich, wenn der String Backslashs enthalten soll, wie zum Beispiel in regulären Ausdrücken; r"\d\s+\d*" ist das Gleiche wie "\\d\\s+\\d*".
Zuweisungen
[Bearbeiten]Zuweisungen können verkettet werden.
In einer Zuweisung können mehrere Objekte zugewiesen werden. Beispiel:
a, b = b, a # Die Werte von a und b werden vertauscht
Zuweisungsoperatoren
[Bearbeiten]Das Symbol für den Zuweisungsoperator in Python ist =; Zuweisungsausdrücke liefern keinen eigenen Wert, d. h. if (a = b): führt zu einem Syntaxfehler.
Für Zuweisungsausdrücke, die einen eigenen Wert liefern, gibt es den zusätzlichen Zuweisungsoperator :=; der Ausdruck (a := b) hat damit den Wert b. Solche Ausdrücken müssen in Klammern gesetzt werden. Dieser Operator entspricht in etwa dem Zuweisungsoperator= in C.
Kombinierte Zuweisungsoperatoren
[Bearbeiten]Binäre arithmetische Operatoren und Bit-Operatoren können mit dem Zuweisungsoperator kombiniert werden, das Ergebnis der Operation wird dann dem linken Operanden zugewiesen.
Operatoren
[Bearbeiten]| Operator | Bedeutung | Operanden: | ||
|---|---|---|---|---|
| Anzahl | Typ | kombiniert mit Zuweisung | ||
| +, - | Addition, Subtraktion | 2 | int, float, complex | +=, -= |
| *, / | Multiplikation, Division | 2 | int, float, complex | *=, /= |
| % | Modulo (Rest) | 2 | int, float | %= |
| // | ganzzahlige Division | 2 | int, float | //= |
| ** | Potenzierung | 2 | int, float, complex | **= |
| - | Vorzeichen | 1 | int, float, complex | |
| |, &, ^ | bitweises Oder, bitweises Und, bitweises XOR | 2 | int, bool | |=, &=, ^= |
| ~ | bitweises Not | 1 | int | |
| <<, >> | Shiftoperatoren | 2 | links: int, rechts: int >= 0 | <<=, >>= |
| % | Formatierung | 2 | links: str, rechts: abhängig von Symbolen im str | %= |
| ==, !=, <, <=, >, >= | die üblichen Vergleichsoperatoren | 2 | beliebig | |
| or, and, not | logisches Oder, logisches Und, logisches Nicht | 2 | bool | |
| in | ist enthalten in | 2 | links: beliebig, rechts: Iterable | |
| not in | ist nicht enthalten in | 2 | links: beliebig, rechts: Iterable | |
| is | ist identisch mit | 2 | beliebig | |
| is not | ist nicht identisch mit | 2 | beliebig | |
| @ | Matrixmultiplikation, nicht implementiert | 2 | @= | |
Das Ergebnis der normalen Division (a / b) ist auch dann vom Typ float, wenn beide Operanden (a und b) vom Typ int sind.
Vergleiche können verkettet werden: a < b < c ist das Gleiche wie a < b and b < c. Dabei sollten größer und kleiner nicht im selben Ausdruck verwendet werden (zum Beispiel nicht a < b > d).
Bedingte Ausdrücke
[Bearbeiten]Der Wert eines Ausdrucks kann auch von einer Bedingung abhängig gemacht werden: if Bedingung TrueWert else FalseWert; "else"... muss immer angegeben werden.
Beispiel: 1 if x >= 0 else -1 ergibt 1 wenn x positiv oder Null ist und sonst -1.
input
[Bearbeiten]Lesen von Tastatureingaben.
Aufrufschema:
s = input(prompt="")
Der Parameter prompt ist optional. Es wird ein String (ohne '\n' am Ende) zurückgegeben.
Formatierte Ausgabe auf das Display oder in eine Datei.
Aufrufschema mit den Defaultwerten der keyword-Parameter:
print(Parameterliste, sep=' ', end='\n', file=None, flush=False)
Alle Parameter sind optional.
Alle Objekte der Parameterliste werden mit str() in Strings konvertiert, durch sep getrennt ausgegeben und durch end abgeschlossen. Wenn file angegeben wurde, erfolgt die Ausgabe in eine (zuvor geöffnete) Textdatei, andernfalls auf sys.stdout (normalerweise das Display). flush=True erzwingt die sofortige Ausgabe.
if
[Bearbeiten]Syntax:
if Bedingung:
Anweisungsblock
elif Bedingung2:
Anweisungsblock2
elif Bedingung3:
Anweisungsblock3
...
else:
else-Anweisungsblock
Nach if, elif und else kann auch nur eine Anweisung in der selben Zeile stehen. Mit elif können beliebig viele Bedingungen geprüft werden; elif und else sind optional.
match
[Bearbeiten]Syntax:
match Ausdruck:
case Wert1:
Anweisungsblock1
case Wert2:
Anweisungsblock2
...
case _: # keiner der vorangehenden Fälle trifft zu
Anweisungsblock X
for
[Bearbeiten]Syntax:
for Element in Sequenz:
Anweisungsblock
Sequenzen können zum Beispiel str, list, tuple, range oder dict sein.
Das Range-Objekt: Häufig werden for-Schleifen durch ein Range-Objekt gesteuert, dieses liefert in jedem Schleifendurchlauf einen Wert aus einer Folge ganzer Zahlen. Parameter sind 'stop' und optional 'start' und 'step', dabei beginnt die Folge immer mit start (Default = 0), und stop ist nie enthalten:
range(stop)liefert alle Zahlen von 0 bis ausschließlich stop, Beispiel:range(10)liefert nacheinander 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.range(start, stop)liefert alle Zahlen von start bis ausschließlich stop, Beispiel:range(1, 4)liefert nacheinander 1, 2, 3.range(start, stop, step)liefert die Zahlen von start bis ausschließlich stop mit Schrittweite step, Beispiel:range(-1, 9, 2)liefert nacheinander -1, 1, 3, 5, 7.- Der Parameter step darf auch negativ (aber nicht 0) sein, stop ist auch dann nicht in der Folge enthalten, Beispiel:
range(8, 0, -2)liefert nacheinander 8, 6, 4, 2.
- Der Parameter step darf auch negativ (aber nicht 0) sein, stop ist auch dann nicht in der Folge enthalten, Beispiel:
Beispiel:
for i in range(10):
print(i**3)
break
[Bearbeiten]Mit break kann eine Schleife vorzeitig verlassen werden.
continue
[Bearbeiten]Mit continue wird der aktuelle Schleifendurchlauf beendet und die Schleife ggf. mit dem nächsten Element fortgesetzt.
while
[Bearbeiten]Syntax:
while Bedingung:
Anweisungsblock
Der Block wird solange die Bedingung erfüllt ist, wiederholt. Auch hier können break und continue verwendet werden.
Es gibt kein do ... while oder repeat ... until in Python.
Bei Bedarf kann das wie folgt nachgebildet werden:
while True: # do
Anweisungsblock
if not Bedingung: break # while Bedingung
Oder
while True: # repeat
Anweisungsblock
if Bedingung: break # until Bedingung
Definition:
def Funktionsname(Parameterliste):
Anweisungsblock
return Ergebnis
Die Parameterliste ist optional, kann variable Länge haben und optionale Parameter mit Defaultwert enthalten. Mit return wird die Funktion verlassen, als Ergebnis können auch mehrere durch Komma getrennte Objekte (zum Beispiel Werte) zurückgegeben werden. Wenn nach return kein Rückgabewert angegeben wird, oder die return-Anweisung fehlt, wird None zurückgegeben.
Aufruf:
Variablenname = Funktionsname(Parameter)
oder
Funktionsname(Parameter)
Definition mit Parameterliste variabler Länge:
def Funktionsname(*args):
for arg in args:
Anweisungsblock
return Ergebnis
Dabei ist args vom Typ tuple. Statt "args" und "arg" können beliebige Variablennamen verwendet werden. Aufruf:
Variablenname = Funktionsname(Parameter1, Parameter2, ..., ParameterN)
oder
Funktionsname(Parameter1, Parameter2, ..., ParameterN)
lambda
[Bearbeiten]Mit lambda können anonyme Funktionen, die nur aus einem Ausdruck bestehen, definiert werden, zum Beispiel um sie als Funktionsparameter zu verwenden. Solche Funktionen können aber auch einer Variablen zugewiesen werden, um sie wie eine normale Funktion aufzurufen.
Syntax:
lambda Parameterliste: Ausdruck
Für die Parameterliste gelten die gleichen Regeln wie oben.
Beispiele:
liste.sort(key = lambda s: s.lower()) # liste von Strings wird sortiert, auf jeden String in der Liste
# wird vor dem Vergleich die Methode lower() angewandt.
odd = lambda n: bool(n & 1) # odd(n) ergibt True, wenn n ungerade ist, andernfalls False
Mit Installation von Python werden bereits sehr viele Module, wie zum Beispiel math, cmath und statistics, bereitgestellt. Um die darin enthaltenen Funktionen, Daten und Datentypen nutzen zu können, müssen sie (einmalig im Programm oder im interaktiven Modus) importiert werden.
Syntax:
import Modulname
# das Modul wird importiert, alle enthaltenen Funktionen
# können mit Modulname.Funktionsname(Parameterliste) aufgerufen werden.
import Modulname as Alias
# das Modul wird unter dem Namen "Alias" importiert, alle enthaltenen
# Funktionen können mit Alias.Funktionsname(Parameterliste) aufgerufen werden.
from Modulname import Funktionsname
# eine Funktion des Moduls wird importiert, Aufruf mit Funktionsname(Parameterliste)
from Modulname import Funktionsname as Alias
# eine Funktion des Moduls wird importiert, Aufruf mit Alias(Parameterliste)
from Modulname import *
# alle im Modul enthaltenen Funktionen werden importiert,
# Aufruf mit Funktionsname(Parameterliste)
Beispiele:
import cmath
y = cmath.sqrt(-1)
import multiprocessing as mp
q = mp.Queue()
from math import sqrt
y = sqrt(2)
from cmath import sqrt as csqrt
y = csqrt(-2)
from math import *
y = sin(pi/6) # sin und pi sind in math enthalten
