Dieser Artikel beschreibt eine in Python integrierte Funktion, eval .

Es ist ein interessantes Hack / Utility in Python, mit dem ein Python-Programm Python-Code in sich selbst ausführen kann.

Die Methode eval() analysiert den an sie übergebenen Ausdruck und führt den Python-Ausdruck (Code) im Programm aus.

Die Syntax von eval lautet:

eval(expression, globals=None, locals=None)
  • Ausdruck: Diese Zeichenfolge wird analysiert und als Python-Ausdruck ausgewertet
  • globals (optional): Ein Wörterbuch zur Angabe der verfügbaren globalen Methoden und Variablen.
  • local (optional): Ein weiteres Wörterbuch zur Angabe der verfügbaren lokalen Methoden und Variablen.

Lassen Sie es uns mit Hilfe eines einfachen Python-Programms erkunden:



from math import *
  
def secret_function(): 
    return "Secret key is 1234"
  
def function_creator(): 
  
    
    expr = input("Enter the function(in terms of x):") 
  
    
    x = int(input("Enter the value of x:")) 
  
    
    y = eval(expr) 
  
    
    print("y = {}".format(y)) 
  
if __name__ == "__main__": 
    function_creator() 

function_creator ist eine Funktion, die die vom Benutzer erstellten mathematischen Funktionen auswertet.

Betrachten Sie eine Ausgabe:

Geben Sie die Funktion (in Bezug auf x) ein: x * (x + 1) * (x + 2)
Geben Sie den Wert von x: 3 ein
y = 60
from math import *
  
def secret_function(): 
    return "Secret key is 1234"
  
def function_creator(): 
  
    
    expr = input("Enter the function(in terms of x):") 
  
    
    x = int(input("Enter the value of x:")) 
  
    
    safe_dict['x'] = x 
  
    
    y = eval(expr, {"__builtins__":None}, safe_dict) 
  
    
    print("y = {}".format(y)) 
  
if __name__ == "__main__": 
  
    
    safe_list = ['acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 
                 'cosh', 'degrees', 'e', 'exp', 'fabs', 'floor', 
                 'fmod', 'frexp', 'hypot', 'ldexp', 'log', 'log10', 
                 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 
                 'tan', 'tanh'] 
  
    
    safe_dict = dict([(k, locals().get(k, None)) for k in safe_list]) 
  
    function_creator()