L'utilisation de variables globales entre les fichiers?

Je suis peu confus sur la façon dont les variables globales de travail. J'ai un grand projet, avec près de 50 fichiers, et j'ai besoin de définir des variables globales pour tous les fichiers.

Ce que j'ai fait a été de définir dans mes projets main.py fichier, comme suit:

# ../myproject/main.py

# Define global myList
global myList
myList = []

# Imports
import subfile

# Do something
subfile.stuff()
print(myList[0])

Je suis en train d'utiliser myList dans subfile.py, comme suit

# ../myproject/subfile.py

# Save "hey" into myList
def stuff():
    globals()["myList"].append("hey")

Une autre façon, j'ai essayé, mais ne fonctionne pas non plus

# ../myproject/main.py

# Import globfile    
import globfile

# Save myList into globfile
globfile.myList = []

# Import subfile
import subfile

# Do something
subfile.stuff()
print(globfile.myList[0])

Et à l'intérieur de subfile.py j'ai eu ceci:

# ../myproject/subfile.py

# Import globfile
import globfile

# Save "hey" into myList
def stuff():
    globfile.myList.append("hey")

Mais encore une fois, cela n'a pas fonctionné. Comment devrais-je mettre en œuvre cette? Je comprends que cela ne fonctionne pas comme ça, quand les deux fichiers ne sais pas vraiment les uns des autres (bien subfile ne sais pas le principal), mais je ne peux pas penser comment le faire, sans l'aide de io écrit ou cornichon, dont je n'ai pas envie de faire.

  • En fait, votre deuxième approche fonctionne bien pour moi. main.py imprime correctement "hé". Pouvez-vous être plus précis sur ce que vous m'par "ça ne marche pas"?
  • l'importation de cycles - le code de la sous-fichier essaie d'importer des globfile, qui en itś corps importations de lui-même de retour
  • NameError: name 'myList' is not defined de main.py ligne print(globfile.myList[0])
InformationsquelleAutor | 2012-10-23