- 准备两个模块文件分别命名为
module1.py
和module2.py
。
module1.py
代码如下:
# 全局变量
title = "模块1"
# 函数
def say_hello():
print("我是 %s" % title)
# 类
class Dog(object):
pass
module2.py
代码如下:
# 全局变量
title = "模块2"
# 函数
def say_hello():
print("我是 %s" % title)
# 类
class Cat(object):
pass
导入模块
import module1
import module2
# 模块别名要符合大驼峰命名法
module1.say_hello()
module2.say_hello()
dog = module1.Dog()
print(dog)
cat = module2.Cat()
print(cat )
- 输出
我是 模块1
我是 模块2
<module1.Dog object at 0x00000194B94A0D30>
<module2.Cat object at 0x00000194B94A02B0>
模块同时指定别名
import module1 as DogModule
import module2 as CatModule
# 模块别名要符合大驼峰命名法
DogModule.say_hello()
CatModule.say_hello()
dog = DogModule.Dog()
print(dog)
cat = CatModule.Cat()
print(dog)
- 输出
我是 模块1
我是 模块2
<module1.Dog object at 0x00000194B94A0D30>
<module2.Cat object at 0x00000194B94A02B0>
from…import解决方法冲突
# 注意:如果两个模块,存在同名的函数,那么后导入模块的函数,会覆盖掉先导入的函数
# 开发时import 代码应该统一写在代码的顶部,更容易及时发现冲突
# 一旦发现冲突,可以使用as关键字给其中一个工具起-个别名
from module1 import Dog
from module2 import say_hello as module2_say_hello
from module1 import say_hello
say_hello()
module2_say_hello()
wangcai = Dog()
print(wangcai)
- 输出
我是 模块1
我是 模块2
<module1.Dog object at 0x00000243ADFC0D30>
from…import * 一次性导入所有工具
# 这种方式不推荐使用,因为函数重名并没有任何的提示,出现问题不好排查
from module1 import *
from module2 import *
print(title)
say_hello()
wangcai = Dog()
print(wangcai)
- 输出
模块2
我是 模块2
<module1.Dog object at 0x00000243C5150D30>
查看模块存储位置
import random
# 查看模块存储位置
print(random.__file__)
rand = random.randint(0, 10)
print(rand)
- 输出
D:\Program Files (x86)\python3.8.3\lib\random.py
10
全局变量、函数、类–对比
- 不加测试代码部分
- 准备两个模块文件分别命名为
name1mo.py
和name2mo.py
。
name1mo.py
代码如下:
def say_hello():
print("你好你好,我是say hello")
# 文件被导入时,能够直接执行的代码不需要被执行
print("amelia开发的模块")
say_hello()
- 输出
amelia开发的模块
你好你好,我是say hello
name2mo.py
代码如下:
import name1mo
print("-" * 50)
- 输出
amelia开发的模块
你好你好,我是say hello
--------------------------------------------------
- 加测试代码部分
- 准备两个模块文件分别命名为
name1mo.py
和name2mo.py
。
name1mo.py
代码如下:
def say_hello():
print("你好你好,我是say hello")
# 如果直接执行模块,__main__
# 如果要测试代码,就增加一个条件判断
if __name__ == "__main__":
print(__name__)
# 文件被导入时,能够直接执行的代码不需要被执行
print("amelia开发的模块")
say_hello()
- 输出
__main__
amelia开发的模块
你好你好,我是say hello
name2mo.py
代码如下:
import name1mo
print("-" * 50)
- 输出
--------------------------------------------------
- 注意:直接执行的代码不是向外界提供的工具!