包,模块,__init__,__all__

总结一下自己做的模块或者包import不了的问题:

(1)每个python文件可以看做一个模块

(2)每个文件夹可以看做一个包,包中含有多个模块,即多个python文件

(3)每个包,即每个文件夹都需要一个__init__.py文件,用来管理包内模块的调用。内容比如下面的:

#in __init__.py
from anet import *
from cc import *

(4)如果我们并不需要,或者并不想要调用一个python文件内的所有类,方法和属性,可以在python文件内部使用__all__。举例,在cc模块下使用__all__暴露接口:

#in cc.py
__all__ = ["dog", "cat"]

def dog():
    print("dog")

cat = "cat"

def man():
    print("man")

woman = "woman"

这样在外部调用cc模块的时候,是无法直接使用man方法和woman属性的

(5)同样可以在__init__.py中使用__all__控制暴露的模块:

#in __init__.py

__all__ = ["anet", "cc"]

from anet import *
from cc import *

(6)模块import不了,有可能是python运行时并没有将模块所在路径纳入搜索范围。搜索路径可以通过下面方式查看:

>>> import sys
>>> sys.path

也可以在程序内,将模块路径添加到搜索路径中:

import sys
sys.path.append("~/projects/xxx")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值