Maison > développement back-end > Tutoriel Python > Quelles sont les différences entre les fonctions « eval », « exec » et « compile » de Python ?

Quelles sont les différences entre les fonctions « eval », « exec » et « compile » de Python ?

Patricia Arquette
Libérer: 2024-12-11 18:17:10
original
638 Les gens l'ont consulté

What are the Differences Between Python's `eval`, `exec`, and `compile` Functions?

La différence entre eval, exec et compile

Introduction

Python fournit trois outils puissants pour exécuter du code de manière dynamique : eval, exec et compile . Chacun sert un objectif spécifique et il est important de comprendre leurs différences.

eval

Eval est utilisé pour évaluer une seule expression. Il prend une chaîne représentant l'expression et renvoie sa valeur. Par exemple :

a = 5
result = eval('a + 10')
print(result)  # Output: 15
Copier après la connexion

exec

Exec est utilisé pour exécuter un bloc de code. Il prend une chaîne représentant le code et renvoie Aucun. Par exemple :

my_code = """
for i in range(5):
    print(i)
"""

exec(my_code)
# Output:
# 0
# 1
# 2
# 3
# 4
Copier après la connexion

compile

Compile est utilisé pour compiler du code en bytecode, qui peut ensuite être exécuté par l'interpréteur. Il prend une chaîne représentant le code et un mode (« eval », « exec » ou « single »).

En mode « eval », compile compile une seule expression en bytecode qui renvoie la valeur de l'expression. En mode 'exec', il compile un bloc de code en bytecode qui renvoie Aucun. En mode « simple », il compile une seule instruction ou expression en bytecode qui imprime la représentation de la valeur de l'expression.

Par exemple :

bytecode = compile('a + 10', 'my_code', 'eval')
result = eval(bytecode)
print(result)  # Output: 15

bytecode = compile("""
for i in range(5):
    print(i)
""", 'my_code', 'exec')
exec(bytecode)
# Output:
# 0
# 1
# 2
# 3
# 4
Copier après la connexion

Résumé

Function What it does
eval Evaluates a single expression
exec Executes a block of code
compile Compiles code into bytecode

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal