Python eval()内置函数

时间:2018-07-04 22:17:20

标签: python interpreter built-in bnf

在网上查找了一些参考资料后,我仍然不了解eval()的工作原理,也许我错过了一个关键组件,希望有人可以指导我找到正确的文档或解释。

假设:

def foo(x,y):
    print(x)
    print(y)

使用eval()调用foo()。

示例1:

eval('foo(1,2)') 

示例2:

eval('foo')(1,2)

根据python 3.6文档,我在示例中调用eval()的方式是应该如何完成,因为我将所有内容作为字符串传递,但是,例如,示例2我仍然不明白为什么python解释器也对我来说正确评估。在第二个示例上运行eval()时,python解释器应返回TypeError,要求缺少2个参数。我希望有人能指出我正确的方向。

1 个答案:

答案 0 :(得分:3)

这是有效的Python表达式:foo。它评估功能。然后可以调用它。这就是foo(1, 2)起作用的原因。您也可以这样做:

x = foo
x(1, 2)

因此eval("foo")求值到函数foo,然后可以调用它。

相关问题