J'ai deux scripts, l'un appelant l'autre à Python 27. Le premier script, script1.py, contient des déclarations conditionnelles. Ensuite, j'ai un deuxième script, script2.py qui appelle le premier script et passe un argument à la fonction, Func1 importé à partir du premier script.
Cependant, je reçois une erreur lors de l'exécution du second script que les variables de Func1 sont non défini. Pourquoi est-ce? Que dois-je faire pour résoudre? P>
merci p>
script1.py: p> script2.py: p> < Pré> xxx pré> p>
3 Réponses :
from Script1 import func1
test1, test2, test3 = func1('1')
print test1, test2, test3
test1, test2, test3 = func1('2')
print test1, test2, test3
Cela donne une erreur de: Traceback (appel le plus récent): fichier "g: /python27/script2.py", ligne 3, dans
Désolé, il y avait trop d'espace. devrait être bien maintenant.
Merci. Cela fonctionne maintenant parfaitement dans mon code actuel ainsi que l'exemple de scénario simple donné dans la question. J'ai également appris une leçon précieuse sur mon voyage Python.
Pour simplifier votre code, vous pouvez définir votre FUNC1 CODE> comme suit, notez que je peux renvoyer les valeurs directement, et je n'ai pas besoin de les assigner aux variables print(func1('1'))
print(func1('2'))
#('a', 'b', 'c')
#('d', 'e', 'f')
dans script1.py dans script2.py p>
si code> et un seul= code> ne va pas ensemble.désolé, va modifier ... était une faute de frappe
Cela ne fonctionnera pas car la portée de ces variables est locale à la fonction.
Votre fonction devrait probablement
RETURN TEST1, TEST2, TEST3 CODE>; Et puis vous pourriez l'appeler de cette façon:test1, test2, test3 = func1 ('1') code>.J'ai pensé que les variables étaient locales à cette fonction, mais comment puis-je les appeler de mon deuxième script? Je sais que vous pouvez faire «à partir de la fonction Import Var», mais le problème ici est la fonction dans Script One est paramétré et je ne sais donc pas comment appeler les variables de Func1 basées sur cette entrée conditionnelle ...
Voici quelques lectures sur les scopes: 9.2. Python scopes et espaces de noms ... 4.2. Nommer et reliure
C'est pourquoi vous devez retourner des valeurs d'une fonction et ne pas utiliser de globaux. Vous pouvez retourner un tuple, E.g.:
Retour Test1, Test2, Test3 Code> puis dans l'appel:Test1, Test2, Test3 = Func1 ('1') code>@cdarke Bonjour, merci d'avoir répondu. Je suis confus sur quels scripts je devrais appeler votre code. Pourriez-vous s'il vous plaît expliquer? Merci
Salut @ gdogg371, vérifiez ma réponse et voyez si cela a du sens pour vous!
@ gdogg371: Les réponses données par d'autres devraient rendre cette clair