0

Disons que j'ai 2 script pythonPython circulaire important dans la première ligne?

le premier:

#X.py 
import Y 
a = 'list' 
print('finish') 

et le second:

#Y.py 
import X 
z = X.a 
print(z) 

Question 1:

Lorsque j'exécute X.py premier , il n'y a rien de mal avec le code, mais quand j'exécute le Y.py en premier, une erreur se produit, mais pourquoi?

Question 2:

Je l'ai regardé quelques réponses pour l'importation circulaire, mais je ne toujours pas understand.In ce cas, à partir de X.py, la première ligne est « importation Y », puis le programme devrait aller compiler Y.py.La première ligne dans Y.py est "import X", donc je suppose que le programme va à X.py à nouveau, puis va à Y.py, et ainsi de suite ..... Mais pourquoi il n'y a pas de boucle sans fin arrive?

Merci pour l'aide!

Répondre

1

Pour répondre à votre première question:

Vous obtenez un AttributeError parce que lorsque vous exécutez Y.py il exécute d'abord l'instruction d'importation qui est à import X. Ensuite, lors de l'importation X, l'instruction import Y est exécutée en premier dans X.py, de sorte que le code recherche la variable a dans Y.py au lieu de X.py. Vous pouvez tester ceci en commentant import Y dans X.py alors cela fonctionnera.

Pour répondre à votre deuxième question:

Un module est chargé qu'une seule fois, quel que soit le nombre de fois où il est importé. Cela empêche l'exécution du module encore et encore si plusieurs importations se produisent.