一.模块和包 (模块部分)
(1)import 引入 : 导入一次,终身受益,不会重复导入
<1>模块.变量 print(mymodule.dog)
<2>模块.函数 mymodule.xboyww()
<3>模块.类 print(mymodule.MyClass().name)
(2)导入任意路径下的模块
自定义模块时,不能使用中文,也不能使用已存在的模块名,会被覆盖
1 import sys
2 print(sys.path)
3 # sys.path.append(r'路径')
4 # import 模块
5 # 把路径添加到系统环境变量path当中,
6 # 执行命令时,系统会自动按照路径找到模块,从而引入
7 # 如果找不到当前模块所在的路径,直接报错
(3)from ... import ... 从 ... 导入 ...
<1>导入单个
from 模块 import 变量|模块|类
<2>导入多个
from 模块 import 变量|模块|类,变量|模块|类,变量|模块|类......
<3>导入所有
# * 代表所有
from 模块 import *
<4>导入的同时,起别名
from 模块 import 变量|模块|类 as 别名
<5>可以设置*号的导入范围
# 模块文件
__all__ = ['变量|模块|类','变量|模块|类']
from mymodule import * #此时*不代表所有,是__all__
(4)__name__ 魔术属性的使用
返回模块名字的魔术属性 __name__
如果当前文件是直接运行的,返回__main__
如果当前文件是间接导入的,返回当前文件名(模块名)
文件直接被执行的时候返回__main__
当成模块被导入的时候,返回模块名本身;
二.模块和包 (包的部分)
- 文件就是模块,文件夹就是包
- __init__.py 对包(文件夹)进行初始化的脚本文件
- 导入包的时候,系统自动调用__init__.py文件,把init文件里面成员进行导入
- 可以通过__init__间接导入其他模块
(1)import 导入包的使用
<1>获取包初始化文件中的成员
import package1 #自动调用package1 文件夹的__init__.py文件
<2>导入包下的某些模块
(2)from ... import 从包导入相应成员
from 文件夹 import 模块
from 文件夹.模块 import 具体成员
from 文件夹.模块 import 具体成员 as 别名
(3)单入口模式(相对导入)
import main同级文件夹下路径具体到模块
- 分模块不能单独进行调用,统一由主文件main进行调用
- 模块之间的互相嵌套导入,使用相对路径实现
- 单入口文件必须和包在同一层级,包里面可以含有各种包和模块
- 相对路径导入的落脚点在 模块或者其中的具体成员身上
# . 代表当前
from . import pgone_2
# .. 上一级
from .. import pkg2_module1
from ..pkg2_module1 import ceshi3001
- . 当前路径
- .. 上一级路径
- ... 上一级的上一级
- .... 上一级的上一级的上一级
- ..... (这里的点是无限的)
- from .......................................... import 模块