Konvertieren einer Liste zu setzen, aber wenn Sie leer ist verwenden Sie eine Standard ein
Ich bin auf der Suche für ein schöner Weg zu weisen, einen Satz mit der zusammenstzung der Liste, wenn eine solche Liste nicht leer ist, sonst eine andere Liste verwendet werden soll.
Wenn es möglich ist würde ich gerne eine schönere Art, das zu schreiben (oder ein argument, warum dies ist die schönste Art und Weise):
if args.onlyTheseServers:
only = set(args.onlyTheseServers)
else:
only = set(availableServers)
- Bitte beachten Sie, dass die offizielle Python style guide (PEP 8) nicht gerne, rufen Sie die Variablen oder Attribute
onlyTheseServers
; es vorziehen würdeonly_these_servers
oder so. is not None
wird Wahr, wenn Sie übergeben eine leere Liste, tun Sie wirklich wollen, die Voraussetzung für die leere Liste oder eine variable Keiner zu sein?- Morgan: Danke! Krank durch zu schauen und es anzunehmen. Ich bin ein bisschen Java-fachen. 🙂
- Ich schrieb
if args.onlyTheseServers is not None:
aber ja, ich will die Bedingung zu false, wenn onlyTheseServers ist eine leere Liste. Vielen Dank für Flecken es! Ich bin es zu verändernif args.onlyTheseServers:
InformationsquelleAutor Deleted | 2012-02-21
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
args.onlyTheseServers
ist eine leere Liste, dann das original erzeugt eine leere Menge in der Erwägung, dass Ihre version möchten, verwenden Sie die Standardeinstellung.Blick auf die bisherige Frage, ich würde sagen, dass das, was Sie wirklich suchen ist ein Weg, um einen Standardwert zuweisen einer fehlenden parameter mit
argparse
. In diesem Fall sollten Sie nur verwendendefault
wie folgt:Diese Weise, wenn die
-o/--only
option nicht übergeben wird, wird der namespace wird der Standard-Wert richtig eingestellt ist.args
!args.onlyTheseServers
scheint eine variable ausargparse
.Wenn das Ihr Fall ist, sollten Sie überprüfen Sie die
default
argument und dieset_default()
Methode.Hier ein Beispiel:
Nicht wirklich viel besser, aber zumindest ein bisschen kürzer:
Können Sie auch tun,
Funktioniert es leicht anders, da es nicht testen
None
, aber nur, wenn das argument true ist-ist - in diesem Fall sollte es aber funktionieren.Rufen Sie mich verrückt, kaufen, ich mag dieses besser