如何通过导入变量来执行类似exec()的操作?

时间:2016-06-13 13:56:19

标签: python python-3.x

我试图为项目做这样的事情:

def printhi():
    print("Hi")
myinput = input() # for example printhi()
exec(myinput)

现在我收到错误,因为exec()只是启动一个新会话并忽略我的函数和变量。我怎么能改变它?

1 个答案:

答案 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)