模块和包
模块
import
- 模块就是一个
.py
文件 - 命名规则跟随变量命名规则
- 使用
import
导入- 找到模块
- 创建模块的命名空间
- 把文件中的名字都放到命名空间
- 模块不会被重复导入
- sys.modules() 查看当前所有导入的模块
- 如果当前列表中有导入模块则不继续导入
- 如果当前列表中没有导入模块则去sys.path中去寻找
- 找到后导入,找不到报错
- 导入模块就会直接执行模块内的代码
- 模块里的函数用
模块名.函数名()
调用 - 先导入内置函数,再导入扩展的,再导入自定义的模块
as- 给模块起别名
import module as other_name
from- 模块中导入变量名
from module import bianliang_name as other_name
from module import *
导入全部变量名
其他知识
__name__
-
在本模块中执行
print(__name__)
返回值为__main__
-
在其他模块中作为导入模块中时返回值为模块名
-
因此
if __name__ == '__main__': print('执行本模块时想打印的话,作为导入模块不执行的话')
-
包
- 一大堆的模块的集合
- 把解决一类的问题模块放在同一个文件夹中,即包
包的导入
-
import``from 包名 import 变量名
import dir1.dir2.dir3 import name as other_name
-
包的导入会自动执行
__init__.py
-
绝对路径
- 包的导入要导入至模块所在文件夹
- 包的导入要从模块所在当前根目录开始导入,检索时找的是根目录的名称
-
相对路径
.
代表当前路径..
代表上级目录
程序编写规范格式
-bin(程序入口)
-start.py
#一般书写定式
import os
import sys
from core import core
sys.path.append(os.path.dirname(os.getcwd())) #将当前文件所在目录的父目录写入sys.path
if __name__ == '__main__':
core.main() #调用主函数
-conf(配置文件,给运维人员看的)
-config.ini
-my_log_setting.py
-settings.py
-core(核心代码)
-core.py
-db(数据库)
-alex_json
-egon_json
-lib(自己写的包或模块)
-read_ini.py
-log(日志文件)
-all2.log