python自定义包导入

来源:互联网 发布:淘宝关键词排名规则 编辑:程序博客网 时间:2024/05/16 07:20

在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 packageimport package.aexample = package.aprint example

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

或者

from package import aexample = package.aprint example

运行结果:

csdn blog

当__init__.py不空白时

__init__.py

import a

a.py和上面相同
b.py

import packageexample = package.aprint example

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

要实现

from package import *

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

__all__=["a"]

b.py

from package import *example = package.aprint example

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

0 0
原创粉丝点击