什么是模块?
模块是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
解释器中有内置模块( 例如:time、sys模块等,由c语言实现的),可以找到的不是内置模块( 例如re、os模块等)
import 先找内置模块 再找执行文件路径下模块 再找python中自带的
import:1、执行对应文件 2、引入变量名(步骤)
注意:import 文件后文件会缓存在内存, import 多次有可能是 import 同一个文件
import 模块名,模块名 #导入多个模块可以这样写
from 模块名 import 函数名 #导入需要的函数
from 模块名 import * #不推荐
多个 py 文件相互调用,系统只认识 执行文件的路径( sys.path ),故调用时要按该路径寻找文件,想调用某下级目录文件需要从平级目录调用下级目录
#my_lesson包 和 bin.py 同级,想要调用 my_lesson 下的 main.py
from my_lesson import main
什么是包?
包就是文件夹,但该文件夹下必须存在 __init__.py 文件,同时包下面还可以包含包
#当出现包下有包的情况,想调用 cal.py 模块的方法
from web.web1.web2 import cal #引入 cal.py 模块
from web.web1.web2.cal import add #cal.py 中引入 add 方法
from web.web1 import web2 #执行web2中__init__.py文件 (唯一不支持的调用方式)
包内引用
如果是子包内的引用,可以按相对位置引入子模块 以 echo 模块为例,可以引用如下:
1 from . import reverse # 同级目录 导入 reverse
2 from .. import frormats # 上级目录 导入 frormats
3 from ..filters import equalizer # 上级目录的filters模块下 导入 equalizer
__name__:在执行文件中等于"__main__",在调用文件中等于 调用模块名
1、from web.web1.cal import add
#在cal中print(__name__) 会返回 web.web1.cal
2、from web.web1 import cal
#在cal中print(__name__) 会返回 web.web1.cal
__file__:所在文件名(返回相对路径,但在pycharm会返回绝对路径)
#引用上级目录的方法
import os,sys
BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
print(sys.path)
#之后就可以引用上级目录