0
votes

Appeler conditionnellement une fonction dans un autre script et utiliser ses variables

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?

merci

script1.py: xxx

script2.py: < Pré> xxx


10 commentaires

si et un seul = 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 ; Et puis vous pourriez l'appeler de cette façon: test1, test2, test3 = func1 ('1') .


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 puis dans l'appel: Test1, Test2, Test3 = Func1 ('1')


@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


3 Réponses :


1
votes
from Script1 import func1

test1, test2, test3 = func1('1')

print test1, test2, test3

test1, test2, test3 = func1('2')

print test1, test2, test3

3 commentaires

Cela donne une erreur de: Traceback (appel le plus récent): fichier "g: /python27/script2.py", ligne 3, dans test1, test2, test3 = func1 ('1') TypeError: "non constitué" objet n'est pas démarré


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.



0
votes

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')


0 commentaires

0
votes

dans script1.py xxx

dans script2.py xxx


0 commentaires