Quelle serait la meilleure façon de vérifier si une variable a été transmise pour le script :
try:
sys.argv[1]
except NameError:
startingpoint = 'blah'
else:
startingpoint = sys.argv[1]
Quelle serait la meilleure façon de vérifier si une variable a été transmise pour le script :
try:
sys.argv[1]
except NameError:
startingpoint = 'blah'
else:
startingpoint = sys.argv[1]
Vérifiez la longueur de sys.argv
:
if len(sys.argv) > 1:
blah = sys.argv[1]
else:
blah = 'blah'
Certaines personnes préfèrent l'approche basée sur les exceptions que vous avez suggérée (par exemple, try: blah = sys.argv[1]; except IndexError: blah = 'blah'
), mais je ne l'aime pas autant parce qu'elle n'est pas « à l'échelle » presque aussi bien (par exemple, lorsque vous voulez accepter deux ou trois arguments) et qu'elle peut potentiellement masquer des erreurs (par exemple, si vous avez utilisé blah = foo(sys.argv[1])
foo(...)
IndexError
IndexError
serait ignoré).
Une autre façon dont je n'ai pas encore vu la liste est de définir votre valeur sentinelle à l'avance. Cette méthode profite de l'évaluation paresseuse de Python, dans laquelle vous n'avez pas toujours à fournir une déclaration else
. Exemple :
startingpoint = 'blah'
if len(sys.argv) >= 2:
startingpoint = sys.argv[1]
Ou si vous devenez FOU de syntaxe, vous pouvez utiliser l'opérateur ternaire de Python :
startingpoint = sys.argv[1] if len(sys.argv) >= 2 else 'blah'
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.