一、昨日内容回顾
1、模块:模块就是一个py文件。模块实际上使我们py文件运行后的名称空间
2、导入模块的动作
1) 判断sys.modules中是否已经导入过该模块
2) 开辟一个内存
3) 在该内存中运行py文件
4) 给这个内存起个名字,一般用的是py文件的名字。返回给导入方
如果你的py文件是启动文件,名字是__main__
程序的入口一般是:
if __name__ == "__main__":
pass
3、import
import 模块名
模块名.属性/方法/类
每个模块都有自己独立的名称空间,每个都有一个global,互相不影响
模块.属性 = 值 # 不要这样干,会改变原来的值
4、from xxx import xxx
from 模块 import 函数/变量
当做自己的变量或者函数来使用
from xxx import * 导入所有
导入的内容都可以起别名 as
二、今日内容回顾
1、包
包就是一个文件夹。 py2中包内必须有一个__init__.py 文件,在py3中可以省略,但是最好保留
__init__.py 当我们导入一个包的时候,默认执行这个包内的__init__.py
if 条件:
语句块
一条语句 > 语句 > 代码块(函数,类) > py文件(模块) > 包
2、相对导入和绝对导入
相对导入:相对于当前的模块所在的包。使用时必须在包外面启动(相对导入不能跨包导入)
绝对导入:根据包的根目录去导入内容
总结:全部都依赖于 sys.path
3、使用包要注意的东西
尽量在包外面启动程序
from xxx.xxx.xx import xxx from什么点什么再点什么,都可以;但是在import后面不能再点了