(11)python 模块和包
一、导入模块和包
模块相当于一个.py文件,包相当于带有个__init__.py一个文件夹,既可按模块导入也可按包导入。
1.导入模块或包
import 包名或模块名 (as 别名),包名或模块名 (as 别名)
2.导入模块或包下的程序单元
from 包名或模块名 import 程序单元 (as 别名),程序单元 (as 别名)
如果导入的是模块,程序单元指的是py文件下的变量、方法、类
如果导入的是包,程序单元指的是包中的py文件
3.两种方式导入的区别
用import方式导入,引入的方法需要带上模块名
用from方式导入,引入的方法不需要带模块名
例如:有两个文件 a.py和b.py
b.py
def dog(): print('汪汪汪') def cat(): print('喵喵喵') class student: age=18 name='tom' def address(self): print('湖北路')
a.py 用import方式引入
import b b.dog() b.student.address("")
a.py用from..import方式
from b import * b.dog() b.student.address("")
4.部分导入
(1)指定导入的模块或方法
对于模块 部分导入指的是导入某个变量方法或类
from b import dog,student dog() student.address("") cat()#报错
(2)使用内置__all__
b.py
def dog(): print('汪汪汪') def cat(): print('喵喵喵') class student: age=18 name='tom' def address(self): print('湖北路') __all__=['dog','student']
a.py
from b import * dog() student.address("") cat()#报错
但是可以使用局部引入
from b import dog,student,cat dog() student.address("") cat()
二、定义包
创建一个 module1文件夹,里面创建两个文件
hello.py
def hello(): print('hello')
hi.py
def hi(): print('hi')
(1)用.子模块方式导入
import module1.hi module1.hi.hi()
(2)或者创建__init__文件
__init__.py
from . import hi #从当前包中导入hi模块