我只是在玩 Python,然后发现了一些奇怪的东西。
我有以下功能:
def myfun(): #f1
return 1
def myfun(): #f2
return 0
print (myfun())
我更改了f1
和f2
中的值,但它似乎总是打印f2
的返回值。有具体原因吗?
最佳答案
在编译型语言中,如果您尝试定义两个具有相同名称的函数,通常会收到一条错误消息。但在 Python 中,函数是一流的对象,它们是动态定义的。
当你定义一个与之前定义的函数同名的新函数时,函数名现在绑定(bind)到新的函数对象,而旧的函数对象被垃圾收集器回收。
因此,您的函数所发生的情况与本页其他答案中发布的简单整数示例所发生的情况没有什么不同。
同样,我们可以对使用 lambda
机制定义的函数做同样的事情。例如:
>>> myfun=lambda:1; myfun=lambda:0; print(myfun())
0
关于python - Python 中的两个同名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28715940/