导入同名函数会覆盖吗?

joh*_*325 6 python import function python-import python-3.x

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

例如:

from file1 import func

func()

from file2 import func

func()
Run Code Online (Sandbox Code Playgroud)

我的问题是,在第二次调用 func 时,该函数是否会被 file2 中的函数替换?或者它仍然会使用从 file1 导入的那个?

像这样覆盖它是否安全,或者该函数以不同的名称命名更好?

Bra*_*ead 4

如果您这样做from foo import func,然后在同一个模块中 from bar import func,那么您只是定义了func两次。但它只能指向一个值,而且是最新的值。一旦你完成了第二个导入,第一个导入可能就根本不存在了。

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

from foo import func as funcFoo

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

foo.funcbar.func

  • 导入可能会产生副作用,因此虽然“func”不再引用“file1.func”,但首先导入“file1”可能会产生其他可观察到的影响。 (2认同)