Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 导入同名函数会覆盖吗?_Python_Python 3.x_Function_Import_Python Import - Fatal编程技术网

Python 导入同名函数会覆盖吗?

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

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

例如:

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
可能会产生其他可观察到的影响。