X Tutup
Skip to content

Latest commit

 

History

History
146 lines (113 loc) · 4.33 KB

File metadata and controls

146 lines (113 loc) · 4.33 KB
title Fonction intégrée Python exec() - Fiche mémo Python
description Cette fonction permet l'exécution dynamique de code Python. L'objet doit être une chaîne de caractères ou un objet code. S'il s'agit d'une chaîne, elle est analysée comme une suite d'instructions Python qui est ensuite exécutée (sauf erreur de syntaxe) [...].
La fonction intégrée Python exec() À partir de la documentation Python 3 Cette fonction prend en charge l'exécution dynamique de code Python. L'objet doit être soit une chaîne de caractères, soit un objet code. S'il s'agit d'une chaîne, celle-ci est analysée comme une suite d'instructions Python qui est ensuite exécutée (sauf en cas d'erreur de syntaxe) [...].

Introduction

La fonction exec() en Python est une fonction intégrée qui permet d'exécuter dynamiquement du code Python stocké dans une chaîne de caractères. Cela peut être très puissant pour les scénarios où vous souhaitez exécuter du code fourni par les utilisateurs, générer et exécuter du code à l'exécution, ou même construire des mini-interpréteurs ou des environnements de script au sein de votre application. Cependant, elle doit être utilisée avec prudence car elle peut potentiellement introduire des risques de sécurité si elle n'est pas gérée correctement.

Syntaxe

exec(object[, globals[, locals]])
  • object: La chaîne contenant le code Python à exécuter.
  • globals (optionnel): Un dictionnaire représentant l'espace de noms global. S'il n'est pas fourni, il utilise l'espace de noms global actuel.
  • locals (optionnel): Un dictionnaire représentant l'espace de noms local. S'il n'est pas fourni, il utilise l'espace de noms local actuel.

Utilisation de Base

code_to_execute = "print('Hello, exec()!')"
exec(code_to_execute)
Hello, exec()!

La fonction exec() peut également être utilisée avec la fonction print() pour afficher la sortie dans la console.

Exécution de Multiples Instructions

code = """
for i in range(5):
    print(i)
"""
exec(code)
0
1
2
3
4

Dans cet exemple, la fonction exec() est utilisée pour exécuter une boucle for qui itère sur une plage de nombres et imprime chaque nombre dans la console.

Modification des Variables

x = 10
code = "x += 5"
exec(code)
print(x)
15

Utilisation de globals et locals

x = 5
code = "x = x * 2"
globals_dict = {"x": 10}
locals_dict = {"x": 20}
exec(code, globals_dict, locals_dict)
print(x)
print(globals_dict)
print(locals_dict)
5
{'x': 10}
{'x': 40}

Création de Fonction Dynamique

def create_dynamic_function(name, args):
    code = f"def {name}({', '.join(args)}): return sum({args})"
    exec(code)

create_dynamic_function("add_numbers", ["a", "b", "c"])
result = add_numbers(2, 3, 5)
print(result)
10

Dans cet exemple, la fonction exec() est utilisée pour créer une fonction dynamique qui prend une liste d'arguments et retourne leur somme.

Gestion des Erreurs

code = """
try:
    print(undefined_variable)
except NameError as e:
    print(f"Error: {e}")
"""
exec(code)
Error: name 'undefined_variable' is not defined

Note de Sécurité

user_input = input("Enter code to execute: ")
exec(user_input)  # Caution: This can be a security risk if not properly sanitized.

Liens Pertinents

  • compile()
  • eval()
  • globals()
  • locals()
  • Gestion des Exceptions
  • Débogage
X Tutup