包
包:一大堆模块的集合
包的导入
import 与模块的导入一样,中间用.隔开,同时也必需.的左边必需为包,整个单位的最小单位是py,不能是函数和变量
from ... import ...
需要注意的是from后import导入的模块,必须是明确的一个不能带点,否则会有语法错误,如:from a import b.c是错误语法
,同时import后面至少是py的上一级,也可以为py中的函数,变量。
__init__文件
只要import了,必学会执行__init__中的代码,不过是在此包级别中
from 包 import *
同理,与模块的导入一样,同时也可以与__all__配合使用。此时from后面的下一级必须有py文件,导入的变量是from下一级中的所有变量与函数。执行from 包 import * 后,导入的是包的次级文件夹中的所有py文件,但是不包括次级文件夹中的包里面的模块,调用时会报错。同时__init__中可以与__all__使用,使其规定导入的某些变量,同时也最好是与__init__同级的模块的变量和函数。
包的绝对导入与相对导入
导语:导入包时导入所有的变量,函数,模块。需要在__init__中加入其他的,来完成导入
包的绝对导入
绝对导入:以最大级别作为起始,包的内部都是以包的第一级为起点 ,从最大级开始导
使用绝对路径 不管在包内部还是外部 导入了就能用
不能挪动,但是直观
包的相对导入
相对导入:用.或者..的方式最为起始(只能在一个包中使用,不能用于不同目录内)
可以随意移动包 只要能找到包的位置,就可以使用包里的模块
包里的模块如果想使用其它模块的内容只能使用相对路径,使用了相对路径就不能在包内直接执行了
详细见http://www.cnblogs.com/Eva-J/articles/7292109.html#_label7