Python 学习笔记(七)【Python中的包】

包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。
简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。__int__.py 用于标识当前文件夹是一个包。
考虑一个在 package_runoob 目录下的 runoob1.pyrunoob2.py__init__.py 文件,test.py 为测试调用包的代码,目录结构如下:

1
2
3
4
5
test.py
package_runoob
|-- __init__.py
|-- runoob1.py
|-- runoob2.py

package_runoob/runoob1.py

1
2
3
4
5
#!/usr/bin/python
# -*- coding: UTF-8 -*-

def runoob1():
print "I'm in runoob1"

package_runoob/runoob2.py

1
2
3
4
5
#!/usr/bin/python
# -*- coding: UTF-8 -*-

def runoob2():
print "I'm in runoob2"

现在,在 package_runoob 目录下创建 init.py:
package_runoob/init.py

1
2
3
4
5
6
7
#!/usr/bin/python
# -*- coding: UTF-8 -*-

if __name__ == '__main__':
print '作为主程序运行'
else:
print 'package_runoob 初始化'

然后我们在 package_runoob 同级目录下创建 test.py 来调用 package_runoob 包

test.py

1
2
3
4
5
6
7
8
9
#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 导入 Phone 包
from package_runoob.runoob1 import runoob1
from package_runoob.runoob2 import runoob2

runoob1()
runoob2()

以上实例输出结果:

1
2
3
package_runoob 初始化
I'm in runoob1
I'm in runoob2

如上,为了举例,我们只在每个文件里放置了一个函数,但其实你可以放置许多函数。你也可以在这些文件里定义Python的类,然后为这些类建一个包。