模块
模块直接导入
import p01
p01.Student("xiaoxiong",19)
p01.say()
假如模块名称直接以数字开头,需要借助importlib帮助
import importlib
p01=importlib.import_module("01")
#接下来就用p01表示01,已经导入了
p01.say()
导入的同时给模块起一个别名
import p01 as p02
p02.say()
选择性的导入,不需要前缀
from p01 import Student, sayHello
stu = Student()
stu.say()
sayHello()
导入模块所有内容
from p01 import *
在p01代码中加入,可以有效避免模块代码被导入的时候被动执行的问题
if __name__='__main__':
print("输出你好")
模块的搜索路径和存储
import sys
#查看
sys.path
#添加
sys.path.append("c:\\")
包
- 包是一种组织管理代码的方式,包里面存放的是模块- 用于将模块包含在一起的文件夹就是包
- 自定义包的结构
#导入整个包
import pkg01
pkg01.inInit()
#导入包中某个模块
import pkg01.p01
sayHello()
#导入包中所有模块
from pkg01 import *
inInit()
__all__
的用法
- 在使用from package import * 的时候, * 可以导入的内容
- __init__.py
中如果文件为空, 或者没有 __all__
, 那么只可以把__init__
中的内容导入
- __init__
如果设置了__all__
的值,那么则按照__all__
指定的子包或者模块进行加载
如此则不会载入__init__
中的内容
- __all__=['module1', 'module2', 'package1'.........]