0

我有一个 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 放在 return 之后,然后使用 = function(astring) 调用该函数,但这也不起作用。我相信我不能使用 eval 因为我的字符串中有函数。

4

1 回答 1

2

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

尝试使用eval

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

function('42')

按预期返回42

或者干脆去掉那个任务:

def function(astring):
  return eval(astring)
于 2013-09-09T12:02:54.510 回答