A propos de exec()
noradan
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
je suis avec Python 33
j'ai besoin de faire exécuter exec dans une fonction et ça ne fonctionne pas§
Je ne comprends pas pourquoi dans un script :
exec('toto=[1,2,3]')
print(toto)
renvoie bien [1,2,3] dans le shell
et pourquoi
def fct():
exec('toto=[1,2,3]')
print(toto)
fct()
dans le même script renvoie une erreur "global name toto undefined"
je suis avec Python 33
j'ai besoin de faire exécuter exec dans une fonction et ça ne fonctionne pas§
Je ne comprends pas pourquoi dans un script :
exec('toto=[1,2,3]')
print(toto)
renvoie bien [1,2,3] dans le shell
et pourquoi
def fct():
exec('toto=[1,2,3]')
print(toto)
fct()
dans le même script renvoie une erreur "global name toto undefined"
A voir également:
- Erreur de format pour exec()
- Format epub - Guide
- Format factory - Télécharger - Conversion & Codecs
- Hp usb disk storage format tool - Télécharger - Stockage
- Format apfs - Guide
- Format doc - Guide
2 réponses
'lut, la version 3 a introduit plein de changements; dont la manière dont on gère les variables/fonctions accessibles par
Quand on regarde la doc, on s'aperçoit que 2 paramètres peuvent être ajoutés: ils servent à définir les objets accessibles par le code, le premier étant les variables globales (donc on ne va rien mettre vu que ton code ne fait qu'une assignation; les variables builtin sont ajoutées toutes seules si absentes de toute façon), le deuxième étant un conteneur pour les variables locales; vide par défaut, qui se remplira.
Un exemple sera probablement plus compréhensible:
Ça marche!
EDIT: mais comme fred1599 le dit,
from human import idiocy
del idiocy
exec.
Quand on regarde la doc, on s'aperçoit que 2 paramètres peuvent être ajoutés: ils servent à définir les objets accessibles par le code, le premier étant les variables globales (donc on ne va rien mettre vu que ton code ne fait qu'une assignation; les variables builtin sont ajoutées toutes seules si absentes de toute façon), le deuxième étant un conteneur pour les variables locales; vide par défaut, qui se remplira.
Un exemple sera probablement plus compréhensible:
def fct(): variables = {} exec('toto=[1,2,3]', {}, variables) print(variables["toto"]) fct()
$ python3.3 test.py [1, 2, 3]
Ça marche!
EDIT: mais comme fred1599 le dit,
execc'est pas bien!
from human import idiocy
del idiocy