在网上查找了一些参考资料后,我仍然不了解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个参数。我希望有人能指出我正确的方向。
答案 0 :(得分:3)
这是有效的Python表达式:foo
。它评估功能。然后可以调用它。这就是foo(1, 2)
起作用的原因。您也可以这样做:
x = foo
x(1, 2)
因此eval("foo")
求值到函数foo,然后可以调用它。