-3

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

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

我需要执行上述语句,但变量计数可能会根据用户输入增加任何想法?

另一个例子 :

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

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

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

4

1 回答 1

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
于 2012-04-09T14:15:40.563 回答