520 Stimmen

Gibt es eine Python-Entsprechung des C# Null-Koaleszenz-Operators?

In C# gibt es eine Nullkoalitionsoperator (geschrieben als ?? ), die eine einfache (kurze) Nullprüfung während der Zuweisung ermöglicht:

string s = null;
var other = s ?? "some default value";

Gibt es eine Entsprechung in Python?

Ich weiß, dass ich es kann:

s = None
other = s if s else "some default value"

Aber gibt es einen noch kürzeren Weg (bei dem ich nicht wiederholen muss s )?

-6voto

Mike Stabile Punkte 21

Die beiden folgenden Funktionen habe ich als sehr nützlich empfunden, wenn ich mit vielen variablen Testfällen zu tun habe.

def nz(value, none_value, strict=True):
    ''' This function is named after an old VBA function. It returns a default
        value if the passed in value is None. If strict is False it will
        treat an empty string as None as well.

        example:
        x = None
        nz(x,"hello")
        --> "hello"
        nz(x,"")
        --> ""
        y = ""   
        nz(y,"hello")
        --> ""
        nz(y,"hello", False)
        --> "hello" '''

    if value is None and strict:
        return_val = none_value
    elif strict and value is not None:
        return_val = value
    elif not strict and not is_not_null(value):
        return_val = none_value
    else:
        return_val = value
    return return_val 

def is_not_null(value):
    ''' test for None and empty string '''
    return value is not None and len(str(value)) > 0

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X