Comment importer des variables d'un fichier à un autre?
exemple: file1
a les variables x1
et x2
comment les transmettre à file2
?
Comment puis-je importer toutes des variables de l'une à l'autre?
from file1 import *
va importer tous les objets et méthodes dans file1
Importer file1
dans file2
:
Pour importer toutes les variables de fichier1 sans saturer l'espace de noms de fichier2, utilisez:
import file1
#now use file1.x1, file2.x2, ... to access those variables
Pour importer toutes les variables de file1 dans l'espace de noms de fichier2 (non recommandé):
from file1 import *
#now use x1, x2..
De la docs :
Bien qu'il soit valide d'utiliser
from module import *
au niveau du module, c'est généralement une mauvaise idée. D'une part, cela perd une propriété importante Python sinon, vous pouvez savoir où chaque nom de niveau supérieur est défini par une simple fonction de "recherche" dans votre éditeur favori. Vous vous exposez également à des problèmes à l'avenir, si certains modules développent des fonctions ou des classes supplémentaires.
Il est préférable d’importer x1 et x2 explicitement:
from file1 import x1, x2
Cela vous permet d'éviter des conflits inutiles d'espace de nom avec des variables et des fonctions de file1
lorsque vous travaillez dans file2
.
Mais si vous voulez vraiment, vous pouvez importer tout les variables:
from file1 import *
En réalité, ce n'est pas vraiment la même chose d'importer une variable avec:
from file1 import x1
print(x1)
et
import file1
print(file1.x1)
Bien qu'au moment de l'importation x1 et fichier1.x1 aient la même valeur, ce ne sont pas les mêmes variables. Par exemple, appelez une fonction dans fichier1 qui modifie x1, puis essayez d’imprimer la variable à partir du fichier principal: vous ne verrez pas la valeur modifiée.
Marc a raison. En fait, vous pouvez imprimer l’adresse mémoire des variables (print (hex (id (libvar)))) et vous pouvez voir que les adresses sont différentes.
# mylib.py
libvar = None
def lib_method():
global libvar
print(hex(id(libvar)))
# myapp.py
from mylib import libvar, lib_method
import mylib
lib_method()
print(hex(id(libvar)))
print(hex(id(mylib.libvar)))