Fonction eval() de Python
Fonctions intégrées de Python3
eval()Est une fonction intégrée de Python utilisée pour exécuter des expressions Python dans des chaînes de caractères.
eval()Accepte une chaîne de caractères, l'exécute comme du code Python et renvoie le résultat de l'exécution. C'est une fonctionnalité puissante, mais une utilisation inappropriée peut entraîner des risques de sécurité.
Définition du mot: evalOuievaluateAbréviation de (évaluation).
Syntaxe de base et paramètres
Format de syntaxe
eval(expression, globals, locals)
Description du paramètre
- Expression de paramètre:
- Type : String
- Description : L'expression Python à exécuter.
- Paramètre globals(facultatif) :
- Type : Dictionnaire
- Description : Espace de noms global.
- Paramètre locals(facultatif) :
- Type : Dictionnaire
- Description : Espace de noms local.
Description de la fonction
- Valeur de retour: Renvoie le résultat de l'exécution de l'expression.
- Avertissement de sécurité: N'utilisez pas sur une entrée non fiable
eval(), car cela peut entraîner des attaques par injection de code.
Exemples
Exemple 1 : Utilisation de base
Exemple
# Calculer une expression mathématique
result = eval("1 + 2 + 3")
print(result) # Sortie : 6
# Utilisation des variables
x = 10
result = eval("x * 2")
print(result) # Sortie : 20
# Expression complexe
result = eval("2 ** 3 + 4 * 5")
print(result) # Sortie : 28
# Appel de fonction
result = eval("len('hello')")
print(result) # Sortie : 5
result = eval("1 + 2 + 3")
print(result) # Sortie : 6
# Utilisation des variables
x = 10
result = eval("x * 2")
print(result) # Sortie : 20
# Expression complexe
result = eval("2 ** 3 + 4 * 5")
print(result) # Sortie : 28
# Appel de fonction
result = eval("len('hello')")
print(result) # Sortie : 5
Sortie attendue :
6 20 28 5
Explication du code :
eval()Peut exécuter des expressions arithmétiques.- Peut référencer des variables définies.
- Peut appeler des fonctions intégrées.
Exemple 2 : Environnement restreint
Exemple
# Restreindre les fonctions et variables disponibles
x = 10
y = 20
# Créer un dictionnaire global restreint
safe_dict = {"x": x, "y": y, "abs": abs}
result = eval("x + y", safe_dict)
print(result) # Sortie : 30
# Interdire l'accès aux fonctions dangereuses
try:
eval("__import__('os').system('ls')", {})
except NameError as e:
print(f"Restriction de sécurité : {e}")
x = 10
y = 20
# Créer un dictionnaire global restreint
safe_dict = {"x": x, "y": y, "abs": abs}
result = eval("x + y", safe_dict)
print(result) # Sortie : 30
# Interdire l'accès aux fonctions dangereuses
try:
eval("__import__('os').system('ls')", {})
except NameError as e:
print(f"Restriction de sécurité : {e}")
Sortie attendue :
30 安全限制: name '__import__' is not defined
Cet exemple montre comment améliorereval()la sécurité en restreignant le dictionnaire global.
Fonctions intégrées de Python3
Autres extensions