python-模块、包
1、什么是模块?
1.一个.py就是一个模块。
2.有什么好处?
提高可维护性;避免函数变量名冲突。
3.如何分类:
内置 ——Python安装时就已经自带,如:sys 、os....
第三方开源 ——世界各地开发者贡献的py文件,通过 pip install 安装
自定义 ——自己写的py文件
注意:导入模块即相当于执行了模块。
4.如何调用的?
import module :直接导入模块
from module import xx :在模块中导入某个函数
from module import xx as xx :导入某个函数时并且把他重命名,方便以后调用时简写。
from module.xx.xx import * :导入全部的函数
5.模块的查找路径: ‘’,从当前py的目录找——》从python自带和第三方库的路径找
只要在一个目录下匹配到,就立刻导入,不再往后找。
6.开源模块的安装:
pip install命令,安装好了,用import xx 就可以调用。
2. 什么是包?
1.包——就是把相关功能的.py文件放在同一个文件夹下,这个文件夹就叫包。
2.不同包之间的模块要怎样导入?
form 包名 import xx
3.包的路径下要有(__init__.py)这个文件,来标识这个文件夹是一个包。
3.包的导入
跨包导入
现在想在manage.py 导入 crm目录下views.py
from crm import view
为什么能直接导入? 由于环境变量里已经添加到‘’,这个代表了把当前文件夹的路径添加到环境变量里,所以编译器可以直接导入。
跨模块导入
现在想在crm下的view.py 导入proj下的setting.py ,要怎样做?
1.如果直接在view.py下直接写from proj import setting
2.运行的话会报错,说找不到模块。
3.为什么? 是因为编译器会从在当前路径下找proj这个目录。
4.可以通过添加环境变量,把路径添加到环境变量中就可以了。
在view.py里添加下面的语句
import os, sys # 1.通过__file__那个views.py文件的绝对路径, # 2.通过os.path.abspath(__file__)获得views.py文件真正的绝对路径 # 3.通过os.path.dirname命令往上走一层,获得crm的路径, # 4.然后把绝对路径添加到环境变量就可以从proj导入settings.py 模块 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 获取真正的绝对路径 sys.path.append(BASE_DIR) print(sys.path) from proj import setting
绝对导入、相对导入
绝对导入:
把路径加入到环境变量列表,这样叫绝对路径的导入。
相对导入:
通过使用..来导入
有两点要求:
1.必须有__init__.py来标识这个文件夹是一个包,而不是普通文件夹。
2.主入口程序不能为顶层的模块。