Seite 1 von 1

lambda s: float(s or 0)

Verfasst: Dienstag 25. September 2018, 10:25
von MagBen
Diese Syntax habe ich in der Numpy Doku entdeckt:

Code: Alles auswählen

lambda s: float(s or 0)
https://docs.scipy.org/doc/numpy/refere ... .genfromtx
als Beispiel für den Parameter converters

Es funktioniert:

Code: Alles auswählen

f = lambda s: float(s or 0)

print( f("123") ) # 123.0
print( f(None)  ) #   0.0
Es hat mich aber überrascht, ich hätte vorher gedacht, dass "s or 0" einen Bool Wert ergeben würde. Tatsächlich ergibt der Ausdruck aber entweder einen String oder eine int.
Wo kann ich eine Erklärung dazu nachlesen?

Re: lambda s: float(s or 0)

Verfasst: Dienstag 25. September 2018, 10:38
von __blackjack__
In der Python-Dokumentation hier https://docs.python.org/3.6/library/std ... and-or-not (Datentypen) und hier https://docs.python.org/3.6/reference/e ... operations (Referenz: Ausdrücke).

Re: lambda s: float(s or 0)

Verfasst: Dienstag 25. September 2018, 13:47
von ThomasL
Fand das hier vor Wochen sehr leichtgängig zu lesen: https://realpython.com/python-operators-expressions/

Re: lambda s: float(s or 0)

Verfasst: Dienstag 25. September 2018, 16:34
von snafu
ThomasL hat geschrieben: Dienstag 25. September 2018, 13:47 Fand das hier vor Wochen sehr leichtgängig zu lesen: https://realpython.com/python-operators-expressions/
Wobei der Vergleich zweier Floats (Abschnitt: https://realpython.com/python-operators ... int-values) etwas bequemer mit dem math-Modul geht:

Code: Alles auswählen

x = 1.1 + 2.2
math.isclose(x, 3.3)
# -> True