我试图为项目做这样的事情:
def printhi():
print("Hi")
myinput = input() # for example printhi()
exec(myinput)
现在我收到错误,因为exec()只是启动一个新会话并忽略我的函数和变量。我怎么能改变它?
答案 0 :(得分:2)
exec
内置函数有两个额外的参数可用于传递本地和全局范围:
x = 10
exec("print(x)", globals(), locals()) # Prints "10"
更新:根据你的例子,我认为更好的"解决方案(或至少更现实的东西)是不使用exec。要调用用户提供的函数,请尝试以下操作:
mypinput = input()
choices = {'printhi': printhi}
if myinput in choices:
function = choices[myinput]
function()
else:
print("Unknown function", myinput)