#模块
模块的分类
1. 安装包中自带的内置模块
2. 需要下载的第三方模块
3. 自定义模块
内存中,如果这个模块已经加载过了,就不会重复加载.
系统内置名称空间(内置的模块)
sys.path指定的路径
?
?
__name__属性
__name__是Python内置的一个属性,Python中的函数,模块,类都有这个属性.
1. 模块直接以脚本方式执行的话,__name__ 属性值是固定的字符串: __main__ .
2. 如果模块是被其他模块导入的话,被导入模块的 __name__ 属性就是这个模块的真实名字.
通过__name__属性的值判断是否执行此测试函数:
if __name__ == ‘__main__‘:
main()
?
解决名称冲突的方案有三种
-
改用 import ... 这种方式导入,后果是使用成员时都必须带上前缀.
-
在程序中命名不要和模块中的成员同名.
-
使用别名
别名(alias)的使用
import test_module as tm # 相当于定义一个tm变量,指向了被导入的模块对象
print(tm.a) # 使用模块的别名访问变量
tm.test() # 使用模块的别名调用方法
1 2 3
?
限制模块中被导入的成员
?
__all__
属性中对成员的限制
在使用 from ... import * 这种方式导入一个模块时,默认情况下这个模块中的所有成员都会被导入.可以在被导入
的模块中使用 __all__ 这个属性控制某些成员可以不被其他模块导入.
# 在my_module.py中添加 __all__ 属性,它是一个由允许被导入的成员名组成的列表.
__all__ = [‘f1‘,‘f2‘]
def f1():
print(‘f1‘)
def f2():
print(‘f2‘)
1 2 3 4 5 6 7
?
?
相对导入
相对导入指的是在同一个路径(包)中的各个模块之间的相互导入时使用的一种方式. 和普通的导入方式不同的是,相对导入只有一种方式:
from 相对路径 import xxx
其中,常用的相对路径就是.和..