In Swift kann ich var?.prop
machen. Dies ergibt nil
, wenn var
ist nil
, sonst ergibt sich der Wert der Eigenschaft prop
von var
.
Äquivalent, ich kann var >>= prop
in Haskell machen, was mir None
ist var
ist None
, sonst gibt es mir den Wert, prop
auf den Wert innerhalb var
anzuwenden (eingewickelt in Just
).
Gibt es in Python ein Äquivalent?
Die anderen Antworten sind auf dem richtigen Weg, wenn sie einen konditionalen Ausdruck vorschlagen, aber falsch, wie es gemacht wird. Du kannst es so machen:
%Vor%oder äquivalent
%Vor%Es gibt einen PEP-Entwurf über das Hinzufügen eines solchen Features zu Python, und darüber wurde bereits diskutiert es auf der Python-Ideen-Mailingliste. Es sieht nicht so aus, als ob es in naher Zukunft hinzugefügt wird (wenn überhaupt), aber das Lesen der PEP gibt Ihnen eine Vorstellung von einigen existierenden und vorgeschlagenen Wegen, dies zu handhaben.
Lange Rede, kurzer Sinn, es gibt keine spezielle Syntax für die Handhabung von Optionals (da es keine Optionals gibt), obwohl Sie die bedingte Zuweisung (ternärer Operator) verwenden können, um die Funktionalität nachzuahmen:
%Vor% In Python würde ich lieber überprüfen, ob var
das Attribut hat, auf das Sie zugreifen möchten.
Sie können eine Funktion schreiben, um sie kürzer zu machen
%Vor%Es gibt eine weniger universelle Möglichkeit, dies zu tun (und weniger explizit, IMHO):
%Vor% Das Problem hier ist, dass Sie None
erhalten, wenn bool(var.prop) == False
, also halten Sie sich besser an den obigen ternären Operator.