Python函数及其调用

2024-04-19 01:24:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是python2.7.2。我想了解调用函数和调用函数的__call__属性之间的关系。例如,考虑下面的代码

def foo():
    return 5
print foo()          # ==> 5
print foo.__call__() # ==> 5

foo.__call__ = lambda : 6
print foo()          # ==> 5
print foo.__call__() # ==> 6

前四行似乎表明调用函数foo与调用foo__call__属性相同。然而,最后三行似乎表明它们是不同的野兽,因为我更改了__call__属性,但它没有更改调用foo()返回的值。在

有人能解释一下调用foo()和调用foo.__call__()之间的关系吗?有没有办法修改函数的行为,使foo()和{}现在返回6而不是5?在


Tags: lambda函数代码return属性foo关系def