从字符串运行函数

时间:2012-04-09 14:08:43

标签: python function

我需要调用一个函数,其名称在python中的字符串中可用 例如:

   [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]

我需要执行上面的语句但是变量count可能会根据用户输入增加任何想法吗?

另一个例子:

a = "for y in range(2,20):print y"

我需要将上面的字符串作为python命令执行

实际问题是循环没有,变量可能会增加取决于输入 somtimes我wnat迭代3项目所以3循环有时4项目然后4循环 所以我想通过这种方式,如果我生成带变量的字符串,如果我可以执行它问题可以解决

1 个答案:

答案 0 :(得分:3)

您正在寻找内置的eval功能:

s = "[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]"
result = eval(s)

如果需要变量,可以使用locals参数:

>>> eval("s.upper()",{'s':'hello'})
'HELLO'

如果要执行语句而不是评估表达式,请使用exec

>>> a = "for y in range(2,20):print y"
>>> exec a
2
3
...
19