python - Python 中的两个同名函数

标签 python

我只是在玩 Python,然后发现了一些奇怪的东西。

我有以下功能:

def myfun():    #f1
    return 1
def myfun():    #f2
    return 0

print (myfun())

我更改了f1f2 中的值,但它似乎总是打印f2 的返回值。有具体原因吗?

最佳答案

在编译型语言中,如果您尝试定义两个具有相同名称的函数,通常会收到一条错误消息。但在 Python 中,函数是一流的对象,它们是动态定义的。

当你定义一个与之前定义的函数同名的新函数时,函数名现在绑定(bind)到新的函数对象,而旧的函数对象被垃圾收集器回收。

因此,您的函数所发生的情况与本页其他答案中发布的简单整数示例所发生的情况没有什么不同。

同样,我们可以对使用 lambda 机制定义的函数做同样的事情。例如:

>>> myfun=lambda:1; myfun=lambda:0; print(myfun())
0

关于python - Python 中的两个同名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28715940/

相关文章:

python - Pydub 系统找不到指定的文件

python - 在模板上显示表单

python - unicode 文字数组

python - 在长时间运行的任务中终止 QThread 和 multiprocessing.pool 进程

python - 如何删除 NDB 数据库的 StructuredProperty(或重复属性)中的单个项目?

python - Django 上的 Crispy Form VariableDoesNotExist

python - 在python中解析大型伪xml文件

python - Spyder 找不到 Enthought 包

python - 如何解析 AND/OR 运算符以评估 python 中的条件字符串

python - 分组依据计算多个 CSV 文件中唯一 ID/itemName 的出现次数,并使用 pandas/python 汇总另一列中的值