Python 模块化 详解
1、模块化介绍
- 一般来说,编程语言中,库 包 模块 是同一概念,是代码组织方式
- 模块
module
:指的是Python
的源代码文件 - 包
package
:指的是模块组织再一起的和包名同名的目录及其相关文件
# 在一个模块内,查看变量 全局变量 局部变量
import os
print(dir())
print(sorted(globals().keys()))
print(sorted(locals().keys()))
# ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'os']
# ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'os']
# ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'os']
2、导入语句 1
import
语句:
- 找到指定的模块,加载和初始化它,生成模块对象;找不到的话,抛出异常
- 在import所在的作用域的局部命名空间中,增加名称和上一步创建的对象关联
import module1, module2 # 完全导入(不能直接导入函数、类等)
import ... as ... # 模块别名(import后面只能写模块)
2.1 示例
import functools
print(dir()) # [... 'functools']
print(functools) # <module 'functools' from 'C:\\。。。Python\\Python38\\lib\\functools.py'>
print(functools.wraps) # <function wraps at 0x0000028EFFD58D30>
import os.path as osp
print(dir()) # [... 'functools', 'osp']
print(osp) # <module 'ntpath' from 'C:\\...Python\\Python38\\lib\\ntpath.py'>
def testimport():
import os.path
print(dir())
print('=' * 55)
testimport() # ['os']
print('*' * 55)
print(globals().keys()) # dict_keys([... 'functools', 'osp', 'testimport'])
2.2 总结
- 导入顶级模块,其名称会加入到本地名词空间中,并绑定到其模块对象
- 导入非顶级模块,只是其顶级模块名称加入到本地名词空间中,导入的模块必须使用完全限定名称来访问
- 如果