Tout ce que je veux, c'est attribuer une valeur initiale à la variable 'extra_devices' et si l'utilisateur spécifie une valeur à cette variable à l'exécution, la valeur par défaut est remplacée par la valeur spécifiée par l'utilisateur. J'ajoute un extrait de code minimal pour montrer ce que je fais. Lors de l'exécution de ce programme, si je ne spécifie pas 'extra_devices', le programme ne s'exécute pas en disant 'UnboundLocalError: variable locale' extra_devices 'référencé avant l'affectation', mais je ne comprends pas la raison pour laquelle j'ai déjà affecté le valeur à cela. Cependant, le programme fonctionne correctement si je spécifie 'extra_devices' à l'exécution. Quelqu'un at-il un raisonnement pour ce comportement? Notez que la variable 'abc' s'imprime bien dans main().Accéder à la variable globale
#/usr/bin/python
import argparse
extra_devices=10
abc = 1
def main():
parser = argparse.ArgumentParser(description='')
parser.add_argument('-extra_devices','--extra_devices',help='extra_devices',required=False)
args = parser.parse_args()
if args.extra_devices is not None: extra_devices = args.extra_devices
print "abc="+str(abc)
print "extra_devices = "+str(extra_devices)
if __name__ == '__main__':
main()
Je suggérerais "écrire à" plutôt que "accès", mais oui. –
Non. Mais je suis capable d'accéder à d'autres variables. Le problème est dû à si args.extra_devices n'est pas None: extra_devices = args.extra_devices. Si je supprime cette ligne, cela fonctionne très bien. – Pretty
@Pretty, avez-vous réellement essayé la suggestion donnée ici avant de commenter? –