Wenn Sie eine Funktion in Python definieren, verwenden Sie normalerweise die Anweisung def
und schreiben sie wie folgt.
python
def foo(x):
print(x)
Diese Funktionsdefinitionsanweisung erstellt ein Funktionsobjekt und weist es dem Namen foo
im globalen Namespace zu.
Wenn das Python-Skript, das diese Funktion definiert, als Text von außen angegeben wird, realisiert der folgende Code die gleiche Verarbeitung wie die obige Funktionsdefinition.
python
func = """def foo(x):
print(x)
"""
exec(func, globals())
Die eingebaute Funktion exec
führt den Python-Code (String oder Code-Objekt) des ersten Arguments im Namespace des zweiten Arguments aus. In diesem Beispiel übergibt das zweite Argument, "globals ()", den globalen Namespace für dieses Modul, sodass darin ein Funktionsobjekt mit dem Namen "foo" erstellt wird. Das heißt, "foo" wird so erstellt, wie Sie es normalerweise in einer "def" -Anweisung definieren würden.
Wenn Sie "foo" ausführen, können Sie sehen, dass es auf die gleiche Weise verwendet werden kann, wie es normalerweise in der "def" -Anweisung definiert ist.
python
>>> foo("hello")
hello
Recommended Posts