`return None` in python nicht empfehlenswert. So umgehen?

Ich habe eine Funktion, die eine Verbindung zu einem url durch httplib mit lxml. Es wird überprüft, indem xpathnach einem bestimmten Muster, und wenn der check positiv ist, gibt es einen string zurück. Aber wenn die Prüfung negativ war, es gibt nichts zurück.

Nun die situation, dass meine Funktion gibt None. Ich rufe die Funktion auf, prüfen Sie, ob Ihr Rückgabewert ist not None und weiter im code.

Beispiel:

def foobar(arg):
    # connect to page by httplib
    # check for arg in a certain pattern by lxml
    if check:
        return result
    else:
        return None

result = foobar(arg)
if result:
    # do stuff
else:
    # do other stuff

Kürzlich Las ich, dass dies ein no go. Wie vermeide ich solche Situationen?

Entfernen Sie einfach else: return None Teil?
Sie sollten wahrscheinlich verwenden Sie if result is None obwohl.
Was ist der Unterschied zwischen if result und if result is None?
Mit if result is not None statt if result (Hinweis: die not) bedeutet, dass andere boolean false Werte wie 0 oder "" werden nicht genauso behandelt wie None, das ist wahrscheinlich das, was Sie wollen. Und wenn Sie möchten, werden ausdrücklich in der Rückkehr None (und es ist nichts falsch mit, dass) dann eine alternative für Ihr foobar wäre return result if check else None

InformationsquelleAutor Aufwind | 2011-05-14

Schreibe einen Kommentar