Auswählen, was läuft
Bisher lief jede Zeile von oben nach unten. Eine if-Anweisung führt einen Codeblock nur aus, wenn eine Bedingung True ist. Mit elif („sonst wenn“) kommen weitere Bedingungen hinzu, mit else alles Übrige. Python prüft sie der Reihe nach und führt nur den ersten Block aus, dessen Bedingung wahr ist. Jede Bedingungszeile endet mit einem Doppelpunkt.
position, target = 100, 250
if target > position:
print("buy", target - position) # buy 150
elif target < position:
print("sell", position - target)
else:
print("hold")Die Einrückung ist die Struktur
Die unter dem if eingerückten Zeilen bilden den Block, der dazugehört; die erste Zeile zurück am linken Rand liegt außerhalb. Verwenden Sie vier Leerzeichen pro Ebene, immer gleich. Python hat keine geschweiften Klammern: Die Einrückung ist die Struktur, eine falsche Einrückung ändert also, was das Programm tut.
# The indented lines are the block that belongs to the if
price = 184.5
if price > 184:
print("above 184") # above 184
print("still inside the if")
print("always runs") # back at the left marginDie Reihenfolge zählt: Der erste Treffer gewinnt
Da nur der erste wahre Zweig läuft, kann eine elif-Kette Schwellenwerte nutzen: Jeder Zweig muss nur sagen, was neu ist. Eine Gebührentabelle ist ein klassisches Beispiel. Setzen Sie die engste oder spezifischste Bedingung zuerst, sonst verschluckt eine weite darüber den Fall.
# elif branches are checked top to bottom; the first True wins
monthly_volume = 3_500_000
if monthly_volume < 1_000_000:
rate = 0.0010
elif monthly_volume < 10_000_000:
rate = 0.0007
else:
rate = 0.0004
print(rate) # 0.0007Früh zurückgeben
In einer Funktion beendet return die Funktion sofort. So behandeln Sie jeden Fall mit eigenem if und return, ohne else und ohne tiefe Verschachtelung; die letzte Zeile ist der Standardfall. So geschriebener Code bleibt flach und liest sich wie eine Regelliste.
# Early returns keep a function flat
def side(position, target):
if target > position:
return "buy"
if target < position:
return "sell"
return "hold"
print(side(100, 250), side(250, 100), side(100, 100)) # buy sell holdEine Auswahl in einer Zeile
Wenn ein if nur einen von zwei Werten auswählt, ist ein bedingter Ausdruck kürzer: value_if_true if condition else value_if_false. Er ist ein Ausdruck und kann daher in einem f-String oder einem return stehen. Nutzen Sie ihn für einfache Auswahlen und ein normales if, sobald mehr zu tun ist.
# A one-line choice between two values
cash = 40.0
status = "ok" if cash >= 0 else "overdrawn"
print(status) # okis_open bereits ein Boolean, schreiben Sie if is_open: und if not is_open:. if is_open == True: sagt dasselbe umständlicher. Dasselbe gilt für if x: bei Zahlen und Text: Es prüft auf „nicht null“ und „nicht leer“.- Zwei Ergebnisse:
if/elseoder ein bedingter Ausdruck in einer Zeile. - Mehrere geordnete Bereiche: eine
elif-Kette, engste Bedingung zuerst. - Sonderfälle und ungültige Eingaben: frühe
returns, der Normalfall zuletzt.
Als Nächstes: for-Schleifen und range, um einen Codeblock für jedes Element zu wiederholen.
Lab: Was bewertet wird
- Mit
order_sidekaufen, verkaufen oder halten entscheiden25 Pkt. - Mit
fee_tierden Gebührensatz für ein Volumen wählen25 Pkt. - Mit
clampeinen Wert zwischen zwei Grenzen halten25 Pkt. - Mit
crossover_signalzwei Durchschnitte in ein Signal verwandeln25 Pkt.