None
mit der if-Anweisung kombiniert Verwenden hierfür üblich ist, ist es bekannt Python-Entwickler und hat keine seltsamen Grenzfälle. Meine Empfehlung ist nur Stick mit der Konvention.
Ihr Vorschlag hier einen or
Betrieb mit abweicht logisch von der herkömmlichen Lösung für die Ränder Fälle, in denen bool(list_of_vals) == False
aber list_of_vals is not None
, so würde ich gegen mit, dass empfehlen.
Eine weitere mögliche Option ist ein leeres Tupel zu verwenden:
def a(vals=()):
...
Da Tupel unveränderlich ist, hat dies keine der Gefahren der wandelbaren Standardliste. Es gibt viele Anwendungsfälle, in denen Sie nur den Eingabecontainer durchlaufen und indexieren müssen, und vals
kann glücklich als ein Tupel bleiben.
Wenn Sie tatsächlich eine Liste innerhalb des Hauptteils der Funktion benötigen, zum Beispiel müssen Sie Elemente anhängen oder aufschnappen, dann fügen Sie vals = list(vals)
als erste Zeile der Funktion hinzu.
Ich mache das, ich denke, es ist großartig. Menschenwürdige Python-Programmierer werden es verstehen. Aber mit 'l' als Variablenname, das ist schlecht. –
@AlexHall, sicher, das ist nur ein Beispiel Code, um eine Idee zu veranschaulichen –
Dies ist sehr häufig. Es ist Standard in JS auch. Tatsächlich kompilieren Standardargumente in Typescript in den obigen Code, aber in JS. Jeder, der auch nur im Entferntesten die Sprache beherrscht, weiß genau, was Sie tun. – Carcigenicate