在网上寻找了一些参考资料后,我仍然不明白eval()真正是如何工作的,也许我遗漏了一个关键组件,希望有人能引导我找到正确的文档或解释。
假设:
def foo(x,y):
print(x)
print(y)
使用eval()调用foo()。
示例1:
eval('foo(1,2)')
示例2:
eval('foo')(1,2)
根据Python3.6文档,我在example上调用eval()的方式是应该如何做的,因为我将所有东西都作为字符串传递,然而,例如#2我仍然不明白为什么python解释器在运行第二个示例的eval()时也会计算correctly.To me。在第二个示例中,python解释器应该返回一个需要2个缺失参数的TypeError。我希望如果有人能给我指明正确的方向。
发布于 2018-07-05 06:21:45
这是一个有效的Python表达式:foo
。它的计算结果是函数。然后,您可以调用它。这就是foo(1, 2)
工作的原因。您还可以执行以下操作:
x = foo
x(1, 2)
因此,eval("foo")
的计算结果是函数foo,然后您可以调用该函数。
https://stackoverflow.com/questions/51181325
复制相似问题