Lange Rede kurzer Sinn, gibt es keine spezielle Syntax optionals zu behandeln (da es keine Extras), obwohl können Sie bedingte Zuweisung verwenden (ternäre Operator), um die Funktionalität zu imitieren:
unpacked_var = var.prop if var is not None else None
Obwohl in Python I würde lieber überprüfen, ob var
das Attribut hat, auf das Sie zugreifen möchten.
unpacked_var = var.prop if hasattr(var, "prop") else None
Sie können eine Funktion schreiben, um es kürzer
def optional(var, attr):
return getattr(var, attr) if hasattr(var, attr) else None
unpacked_var = optional(var, "prop")
Es gibt eine weniger universell diese (und weniger explizit, IMHO) zu tun:
unpacked_var = hasattr(var, "prop") and var.prop or None
Das Problem hier ist, dass Sie None
wenn bool(var.prop) == False
erhalten, so dass Sie besser bei dem ternären Operator oben bleiben sollten.
Verwirrender Titel und Tags. – Snusmumrikken
Sie können einen Bedingungsausdruck verwenden: 'var.prop if var else var', aber im Allgemeinen wird in Python erwartet, dass Sie wissen, wann etwas None ist und wann nicht und nicht immer wieder nachfragen. –
@Snusmumrikken Nicht wirklich, es ist wirklich klar, du musst nur die Konzepte von Swift oder Haskell verstehen, um es verstehen zu können. – Zizouz212