在我的节目,我有25个不同的功能命名"task1","task2","task3",等...此刻我可以从一个单独的文件中对这些函数调用,并做他们的外壳:
import examplefilename
tasknum = str(input("Which task would you like to see? "))
task = "task" + tasknum
methodToCall = getattr(examplefilename, task)
result = methodToCall()
Run Code Online (Sandbox Code Playgroud)
尽管我所做的只能从另一个文件中调用,所以如何从同一文件中以这种方式执行功能呢?
如果我的理解是正确的,那么这些函数是在同一文件中定义的,并且您需要用户输入才能调用它们,只需使用globals代替即可getattr。
也就是说,将替换为getattr:
methodToCall = globals()[task] # it isn't a method, though
Run Code Online (Sandbox Code Playgroud)
其余保持原样。
作为一个评论还指出,包装input带str是多余的这里,input已经返回一个字符串。