Ich möchte, dass alle mathematischen Operationen, die eine oder mehrere None-Variablen enthalten, keine zurückgeben.Wie konvertiere ich alle Python-Operationen, die None-Werte enthalten?
Beispiel:
a = None
b = 7
a*b
Ich möchte diese letzte Zeile Keine zurückzukehren, aber es gibt mir stattdessen eine Fehlermeldung:
TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
Ich verstehe, warum dieser Fehler vorhanden ist, und all das, aber es gibt eine Möglichkeit, das Ergebnis zu zwingen, nur ein None
zu sein?
Hintergrund: Ich habe ein paar Funktionen, die Daten abbauen und einen Wert, genannt diff
. Später multipliziere oder füge ich diff
zu einigen Sachen hinzu, um bedeutungsvolle Informationen zu erhalten, aber nicht alle meine ursprünglichen Daten enthalten ein nützliches diff
, also habe ich es eingestellt, diff = None
in diesen Fällen zurückzugeben. Ich möchte diese Punkte überspringen können, wenn ich Ergebnisse erstelle. Python scheint keine Probleme zu haben, über None
Elemente in einem Array zu springen, wenn ich plane, also möchte ich nur die Ergebnisse der Operationen haben None
sein.
einen Schwimmer verwenden ("NaN"), anstatt 'None' – donkopotamus
(http [Wie Attribut Lookups Kette, die keine Rückkehr könnte?]: // Stackoverflow.com/q/15280511); [Vielleicht "Art von" Monade in Python] (http://stackoverflow.com/q/8507200), –
Ähnlich wie @donkopotamus können Sie das Dezimal-Modul und 'Dezimal.Decimal ('NaN')' für 'None' verwenden . Dies ist möglicherweise vorzuziehen, wenn Sie eine korrekt gerundete Dezimalarithmetik wünschen. Wenn alle Ihre Operationen Dezimalzahlen verwenden, funktioniert es so, wie Sie es möchten. – tdelaney