Donc, je suis confus. J'ai un module contenant une fonction que j'utilise dans un autre module. Importé comme ceci:Python - Affecter une variable globale à la fonction return nécessite que la fonction soit globale?
from <module> import *
intérieur de mon module, il existe des fonctions dont le but est de définir des variables globales dans le programme principal.
main.py:
from functions import *
bar = 20
print bar
changeBar()
print bar
functions.py:
def changeBarHelper(variable):
variable = variable * 2
return variable
def changeBar():
global bar
bar = changeBarHelper(bar)
Maintenant, ceci est une simplification, mais il est le code moins qui donne le même résultat:
Traceback (most recent call last):
File "/path/main.py", line 5, in
changeBar()
File "/path/functions.py", line 7, in changeBar
bar = changeBarHelper(bar)
NameError: global name 'bar' is not defined
Astuce: Ne pas utiliser des variables globales. Ils sont une idée colossalement mauvaise. C'est un excellent exemple de pourquoi. Ils sont difficiles à utiliser. Donc ne les utilisez pas, –
les variables globales sont mauvaises. l'importation * est le mal. Le mal engendre la confusion. –