自定义 — 导包
# python里面提供了查询可导包位置方法
import sys
print(sys.path)
demo_file是本项目的主目录
如上图:我们需要在demo1里面导入demo2中的func函数如何操作呢?
# 我们在demo1里面查询可导包位置--- 结果看下图
# 结果信息表示:我们可以在项目主目录下面进行导包 以及 当前文件所在目录下进行导包
# 上述的就是我们常规的导包方式(自定义的)
from imp.demo2 import demo # 这是从项目主目录下面开始导的(标准式)
from demo2 import demo # 从当前文件所在目录下,会爆红,但可运行
# 注意目录名:我这里imp与python内置同名,如有异常情将imp目录名更改成其它名字(遵循命名规则前提下)。当然目录名更改,对应的操作名记得调整哦
导包问题
明明是导的demo2里面的函数,并且demo1里面也没有调用呀!!!, 咋运行demo1会出现这样的结果?
原因是:在导包的时候,会去生成一个pyc文件,会将目标(包)文件进行复现,而我们在其他地方使用的就是这里面的。所以在第一次导入目标包会将其整个执行
那么如何避免呢???
运用python文件的__name__属性
---- 当运行是当前文件, 当前文件__name__属性值为:__main__
---- 不是运行当前文件(demo1调用demo2里面的方法)
当前文件(demo2)__name__属性值为:文件名
因此避免导包问题的方式:
if __name__ == '__main__':
正常来说:封装的函数及类都放在上面,操作逻辑放在其内部
如上图所示