包的使用
Posted zhangshengxiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了包的使用相关的知识,希望对你有一定的参考价值。
包(***)
1.什么是包
包就是包含有__init__.py文件的文件夹
包本质是一个模块,即包是用来导入使用的,包内部包含的文件也都是用来被导入使用的
2.为何要用包
包是文件夹,那文件夹就是用来组织文件的
首次导入包发生三件事
1 以包下的__init__.py文件为基准来产生一个名称空间
2 执行包下的__init__.py文件的代码,将执行过程中的名字都丢到名称空间中
3 在当前执行文件中拿到一个名字p1,该p1就是指向_init__.py的名称空间的
import p1 #导入包就是在导入包下的__init__.py文件
注意:
在python2中,包下必须有一个_init__.py的文件,而python3中即便没有也不会报错
当run文件与p1在同一文件下时
run文件需要使用p1中的模块时,只需在p1下__init__.py文件中将需要使用的模块import其中即可
当run文件与p1在不同一文件下时
需要在run文件中将p1父目录的路径添加到环境变量中
导入包需要注意的问题:
当凡是在导入语句中带点的,点的左边都必须是一个包
导入时每次只需从p1开始导入即可,找到p1是在run文件中处理
总结包的使用无非注意三点:
1 导入包就是在导包下的__init__.py文件
2 使用绝对导入,而导入的起始位置都是以包的顶级目录为起始点
3 但是包内部模块的导入通常应该使用相对导入,因为当修改顶级包名时,内部的导入就不需修改了
用.代表当前所在的文件(而非执行文件), ..代表上一级
强调:1相对导入只能包内部的模块之间互相导入使用
作业要求:
其中注释掉的为绝对导入方法,其它为相对导入方法!
2 ..上一级不能超出顶级包
run文件处理:
pkg下__init__.py处理:
sub2下__init__.py处理:
以上是关于包的使用的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用haven包的read_spss函数读取spss格式数据使用haven包的read_sas函数读取SAS格式数据使用haven包的read_dta函数读取Stata格式数据
R语言使用skimr包的skim函数查看使用dplyr包的groupby函数分组后dataframe的summary信息统计汇总信息(Handle grouped data)
R语言使用caretEnsemble包的caretList函数一次性构建多个机器学习模型并使用caret包的resamples函数比较在同一数据集上多个机器学习模型的比较结果