我有一个python 3函数,它接受一串命令,比如'np.pi',然后尝试用该字符串定义一个变量。然后我尝试返回变量,但这不起作用。
input = np.pi
astring = 'funcD(funcC(funcB(funcA(input))))'
def function(astring):
astring= 'variable = ' + astring
exec(astring)
return variable
In: a = function(astring)
Out: NameError: global name 'variable' is not defined
似乎没有发生任何事情。我想要的是让函数返回字符串中命令的输出。该字符串包含几个函数,这些函数彼此相互输入,如下所示。我尝试在返回后放入exec而不添加变量=然后使用= function(astring)调用该函数,但这也不起作用。我相信我不能使用eval,因为我的字符串中有函数。
答案 0 :(得分:2)
你没有说明你对答案的期望,所以我猜测:你想让这个工作。
使用eval
:
def function(astring):
astring= 'variable = ' + astring
exec(astring)
return eval('variable')
function('42')
按预期返回42
。
或者简单地删除该作业:
def function(astring):
return eval(astring)