24.导包及其问题

自定义 — 导包

# 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__属性值为:文件名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3WhxbFGm-1650700517485)(A2B7E9BC0A4747C59ABE1AC05693A6C7)]

在这里插入图片描述

因此避免导包问题的方式:
在这里插入图片描述

if __name__ == '__main__':


正常来说:封装的函数及类都放在上面,操作逻辑放在其内部
如上图所示
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值