Exécutez l'instruction [python] exec, eval

exec 2. Fonctions intégrées

exec(object[, globals[, locals]]) Cette fonction prend en charge l'exécution dynamique du code Python. L'objet doit être une chaîne ou un objet de code. S'il s'agit d'une chaîne, elle est analysée comme une série d'instructions Python et exécutée (sauf si une erreur de syntaxe se produit). Si la partie facultative est omise, le code s'exécutera dans sa portée actuelle.

Donc, ici, je mets une chaîne de caractères dans object et l'utilise.

eval

eval(expression, globals=None, locals=None) Prend une chaîne et des arguments optionnels globals, locaux. Si vous donnez des globaux, ce doit être un dictionnaire. Si vous donnez des locaux, cela peut être n'importe quel objet cartographique. L'argument expression est analysé et évalué comme une expression Python (techniquement une liste de conditions). Les dictionnaires globals et locals sont ensuite utilisés respectivement comme espaces de noms globaux et locaux.

Comment utiliser

sample_exec.py


Python 3.5.0
>>> exec("a = 10; b = 13; print(a, b)")
10 13
>>> print(a, b)
10 13
>>> eval(`a + b`)
23

Ici, exec exécute ʻa = 10, b = 13, print (a, b) . eval exécute ʻa + b et renvoie sa valeur. De plus, globals () est un dictionnaire, donc si vous donnez un dictionnaire comme argument, il y écrira.

use_dict.py


Python 3.5.0
>>> a = dict()
>>> exec("b = 1; c = 2", globals(), a)
>>> a
{'b': 1, 'c': 2}
>>> eval("b + c", a)
3

Dans exec, a dans le dict vide est {'b': 1, 'c': 2}. Dans eval, globals est a, et les valeurs du dictionnaire a sont calculées. Donc, en réalité, nous calculons ʻa ['b'] + a ['c'] `.

Utilisez ceci pour essayer de l'utiliser comme "json.loads".

json_like.py


# exec
''' write file '''
a = [1,2,3,4,5,6]
b = [2,3,4,5,6,7]
with open('test.txt', 'w') as fout:
    fout.write('num_list_a = ' + repr(a))
    fout.write('num_list_b = ' + repr(b))

''' load file '''
exec(open('test.txt').read())
print('a =', num_list_a, '\nb =', num_list_b)

# eval
''' write file '''
a = [1,2,3,4,5]
with open('test2.txt', 'w') as fout:
     fout.write(repr(a))
del a

''' load file'''
num_list_c = eval(open('test2.txt').read())
print('c =', num_list_c)

production

output.txt


a = [1, 2, 3, 4, 5, 6] 
b = [2, 3, 4, 5, 6, 7]
c = [1, 2, 3, 4, 5]

Comme exec ne renvoie pas de valeur, vous devez définir la variable sous forme de chaîne. Si vous utilisez eval, il renverra une valeur, donc si c'est simple, vous pouvez l'utiliser comme json.

Résumé

Exécuter une instruction python avec exec Évaluation d'une seule expression avec eval

Recommended Posts

Exécutez l'instruction [python] exec, eval
Instruction d'exécution Python
Python - Différence entre exec et eval
[Introduction à l'application Udemy Python3 +] 33. instruction if
Instruction Python if
Mis à jour vers Python 2.7.9
[Python] instruction if
Instruction d'assertion Python
"Backport" vers python 2
[Introduction à l'application Udemy Python3 +] 40. Instruction while else
[Introduction à l'application Udemy Python3 +] 43. instruction for else
Exécutez Power Query en passant des arguments à Python
[Python] Résumé des fonctions eval / exec + Comment écrire une chaîne de caractères avec des sauts de ligne
Bases de Python ② pour déclaration
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
Réécrire le code Python2 en Python3 (2to3)
Exécuter automatiquement le fichier python
Comment installer python
Introduction au langage Python
Exécuter des commandes depuis Python
Introduction à OpenCV (python) - (2)
Remarque pour faire de python un démon
Introduction de Python 2.7 à CentOS 6.6
python Spécifie la fonction à exécuter lorsque le programme se termine
Exécuter la fonction Python à partir de Powershell (comment passer des arguments)
[Introduction à Udemy Python3 + Application] 68. Instruction d'importation et AS
Connectez python à mysql
Comment exécuter une commande à l'aide d'un sous-processus en Python
Exécuter la commande depuis Python
Instruction if de base Python
[Python] pour une erreur d'instruction
[Introduction à l'application Udemy Python3 +] 42. pour instruction, instruction break et instruction continue
[Introduction à l'application Udemy Python3 +] 39. instruction while, instruction continue et instruction break
[Python] Comment écrire une instruction if en une phrase.
Comment définir plusieurs variables dans une instruction Python for
[Route vers Python intermédiaire] Utiliser l'instruction if dans la notation d'inclusion de liste
Je ne savais pas comment utiliser l'instruction [python] for
Création d'un environnement pour exécuter des programmes Python sur AWS EC2
Comment exécuter des commandes et des scripts shell externes en python
Connectez-vous à BigQuery avec Python
[2020.8 dernière] Comment installer Python
[python] Convertir la date en chaîne
Publier de Python vers Slack
Comment installer Python [Windows]
publier sur vim → Python → Slack
Introduction à Python Django (2) Win
Pour vider stdout en Python
Convertir numpy int64 en python int
python3: Comment utiliser la bouteille (2)
[Python] Convertir la liste en Pandas [Pandas]
Flirter de PHP à Python
Une route vers Python intermédiaire
Essayez de comprendre Python soi
Notes Python à oublier bientôt
[Python] Comment utiliser la liste 1