Fonction eval() de Python

Python3 内置函数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 fiableeval(), 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

Sortie attendue :

6
20
28
5

Explication du code :

  1. eval()Peut exécuter des expressions arithmétiques.
  2. Peut référencer des variables définies.
  3. 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}")

Sortie attendue :

30
安全限制: name '__import__' is not defined

Cet exemple montre comment améliorereval()la sécurité en restreignant le dictionnaire global.


Python3 内置函数Fonctions intégrées de Python3


Autres extensions