python自定义包导入

在python项目中经常需要自己定义一个包(package)来进行代码分离,提高可读性。
所谓的包实质上是一个文件夹,在文件夹中包含.py文件和一个__init__ .py 文件(可以是空白),我认为可以把 __init__.py文件理解为包的“初始化”。如果没有这个文件,很多python的ide会认为这是个普通的文件夹而不是一个python包。

接下来就是基本讲解
假设文件目录如下

-b.py
-/package
     - __init__.py
     - a.py

下面是代码例子

当__init__.py为空白时

a.py

print "csdn blog" 

__init__.py空白
b.py

import package
import package.a
example = package.a
print example

注意:如果在import package后面没有再import package.a,然后在下面直接用package包里面的a模块时会报错:
AttributeError: 'module' object has no attribute 'a'

或者

from package import a
example = package.a
print example

运行结果:

csdn blog
当__init__.py不空白时

__init__.py

import a

a.py和上面相同
b.py

import package
example = package.a
print example

此时运行正常(对比上面__init__.py空白时运行出错的例子)

要实现

from package import *

需要在__ init__.py文件中配置一个__all__列表
__init__.py

__all__=["a"]

b.py

from package import *
example = package.a
print example

运行正常,输出csdn blog
当你有多个模块时,__all__就很有用了,可以在__all__列表中继续添加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值