python中包,模块,类的相关知识
一,python项目的组织结构
分为:包,模块,类
二,python中包与模块的关系
区分模块(命名空间)
bao1.mokuai
bao2.mokuai
包与模块也可平级
在包下创建一个__init__.py模块
查询直接使用bao1,而不用使用bao1.__init__
三,使用import导入模块
如何让在一个文件里导入另一个模块(同级)
如c7中a=7
在c8中操作
import c7
print(c7.a)
输出为7
如果c7在t的子包里
则需要import t.c7
如果包的嵌套过多,则命名空间过长
但可用import t.c7 as m代替,则使命名空间过长简短
四,from import导入变量
from t.c7 import a
导入变量
也可导入模块from t import c7
如果有多个变量,也可导入:from t.c7 import *
如果想导入指定多个变量:
可在c7包里说明使用:
_all_=['a','b','c']
a=2
b=3
c=4
则可导入上三个变量
如果写为__all__=['a','c']
则在c8中的*就无法导入b的变量
from t.c7 import a,b,c
或from t.c7 import (a,b,c)
也可
五,init.py的用法
python中建议一行中代码长度不超过80的,解决换行的方法:在行末加上一个反斜杠
__init__.py
在t的包里
在__init__.py
中写入
a='This is a happy day.'
print(a)
在c8里使用import t
则直接输出This is a happy day.
如果输入from t.c7import a
则也会输出This is a happy day.
在__init__.py
中输入_all_=['c7']
则只能导出c7中的值
import sys
import datatime
import io
的导入
可将上三个导入写入__init__.py
在c8中写入import t
则可使用print(t.sys.path)
使导入的代码简略
六,包与模块的几个常见错位
包与模块不会重复的被导入
python中导入一个模块就会执行这个模块中的内容
注意:入口文件仅有一个