Python 导入同名函数会覆盖吗?
我想从2个不同的文件中导入2个函数,其中文件的名称不同,但函数的名称相同。我想执行第一个函数,然后导入下一个函数并执行它 例如:Python 导入同名函数会覆盖吗?,python,python-3.x,function,import,python-import,Python,Python 3.x,Function,Import,Python Import,我想从2个不同的文件中导入2个函数,其中文件的名称不同,但函数的名称相同。我想执行第一个函数,然后导入下一个函数并执行它 例如: from file1 import func func() from file2 import func func() 我的问题是,在第二次调用func时,该函数是否会被file2中的函数替换?或者它仍然会使用从file1导入的文件吗 这样覆盖是否安全,或者如果函数的名称不同会更好?如果从foo import func执行,然后在同一模块中执行 从bar im
from file1 import func
func()
from file2 import func
func()
我的问题是,在第二次调用func时,该函数是否会被file2中的函数替换?或者它仍然会使用从file1导入的文件吗
这样覆盖是否安全,或者如果函数的名称不同会更好?如果从foo import func执行
,然后在同一模块中执行
从bar import func
,您只需定义两次func
。但它只能指向一个值,这将是最近的一个值。第一次导入可能在您完成之后就不存在了
做了第二个
要避免这种情况,可以通过在导入时指定不同的名称来执行导入:
从foo导入func作为funcFoo
或者,您可以只导入模块,然后使用:
foo.func
和bar.func
您可以执行以下操作:从文件1导入func作为func1
和从文件2导入func作为func2
,以避免冲突您所拥有的功能将按照您所描述的方式工作。但对于未来的代码读者来说,更好的方法可能是:importfile1,file2;file1.func();file2.func()
不,这不安全。这只会增加混乱和错误的代码。不惜一切代价避免它。测试它将非常简单。只需创建两个打印某些内容的函数。然后创建一些这样的代码,看看打印了哪些消息。导入可能会有副作用,因此虽然func
不再引用file1.func
,但导入file1
可能会产生其他可观察到的影响。