Ich habe eine Funktion, die unter anderem andere Funktionen basiert, die auf Parametern basieren. Die Parameter sind Saiten. Also in seiner einfachsten Form: < /p>
function_caller("function1") will call function1()
function_caller("function2") will call function2()
etc
< /code>
Ich habe dies mit der Funktion Python Globals () verwaltet. Also: < /p>
def function_caller(choice):
globals()["chosen_function"] = choice
data = chosen_function()
reply data
the_result = function_caller("function1")
< /code>
Dies funktioniert recht gut. Ich verwende diese Methode in einigen meiner Projekte, also wollte ich mit einem Import experimentieren, anstatt den Code in jedem Projekt aufrechtzuerhalten. Ich könnte an dieser Stelle erwähnen, dass ich Python so lerne, wie ich gehe, und dies ist mein erster Ausflug in Importe. Also habe ich in jedem relevanten Projekt eine Tools.Py erstellt.def function_caller(choice):
globals()["chosen_function"] = choice
data = chosen_function()
reply data
< /code>
project.py:
import tools
def function1():
return
which_one = "function1"
the_result = tools.function_caller(which_one)
< /code>
Ich habe schnell gelernt, dass Globals () nicht das getan hat, was ich in den Namespaces erwartet hatte. Dies führt mich dazu, den Code in Tools.py von < /p>
zu ändern globals()["chosen_function"] = choice
data = chosen_function()
< /code>
zu < /p>
data = eval("__main__." + choice + "()")
< /code>
Es funktioniert, aber ich habe einige Beiträge gesehen, die vor der Verwendung von Eval () oder exec () warnen. Was denken die Experten?
Verwenden von Eval (), um ein Python -Problem zu lösen, und möchte ein Feedback ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post