导入同名函数会覆盖吗?

Importing functions of same name will overwrite?

我想从 2 个不同的文件导入 2 个函数,其中文件名称不同,但函数名称相同。我想执行第一个函数,然后导入下一个函数并执行它。

例如:

from file1 import func

func()

from file2 import func

func()

我的问题是在第二次调用func时,函数是否会被file2中的函数替换?还是会继续使用从 file1 导入的文件?

这样覆盖它是否安全,或者如果函数命名不同则更好?

如果您执行 from foo import func 然后稍后在同一模块中 from bar import func,那么你就简单地定义了两次func。但它只能指向一个值,而且那将是最近的一个。一旦你已经存在,第一次导入也可能从未存在过 完成了第二个。

为避免这种情况,您可以通过在导入时分配不同的名称来进行导入:

from foo import func as funcFoo

或者您可以只导入模块然后使用:

foo.funcbar.func