内部使用exec(string)和字符串内部的变量定义的函数不能返回python 3中的变量

时间:2013-09-09 10:34:46

标签: python string function exec

我有一个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,因为我的字符串中有函数。

1 个答案:

答案 0 :(得分:2)

你没有说明你对答案的期望,所以我猜测:你想让这个工作。

使用eval

尝试
def function(astring):
  astring= 'variable = ' + astring
  exec(astring)
  return eval('variable')

function('42')

按预期返回42

或者简单地删除该作业:

def function(astring):
  return eval(astring)