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
Patricia Arquetteoriginal
2024-12-11 18:17:10639parcourir

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

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

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

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!

Déclaration:
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