如下,在一个包里的两个模块分别定义了一个名称一样的函数:
包结构与模块内容:
my_package/__init__.pymodule1.pymodule2.py
模块一代码:module1.py
def say_Hello():print("Hi!")
模块二代码:module2.py
def say_Hello():print("你好!")
如果我们要在另外一个模块里都要调用上面两个模块中的say_Hello()函数,我们该如何解决它们名称的冲突呢?有两个方式:
方式一:导入函数的时候对函数进行别名,如:
from my_package.module1 import say_Hello as f1
from my_package.module2 import say_Hello as f2# 调用
f1() # 输出 Hi!
f2() # 输出 你好!
方式二:使用完全限定名(qualified name)—>[包名.]模块名.函数名,如:
from my_package.module1
from my_package.module2# 调用
my_package.module1.say_Hello() # 输出 Hi!
my_package.module1.say_Hello() # 输出 你好!
或
from my_package import module1
from my_package import module2# 调用
module1.say_Hello() # 输出 Hi!
module1.say_Hello() # 输出 你好!