之前我们见过了模块的使用,那么包是什么呢?

  • 包就是一个文件夹,里面包含了一个 __init__ 文件。
  • 一个包里面可有很多模块,也可以有其他包。

定义包

新建一个 itfun_pacakge 文件夹,里面再新建一个 __init__.py

print("init 运行了")

新建一个 pig.py 模块

def fly():
    print("I Can Fly")

这样一个包就定义完成了。

包的使用

在包的外层,定义 hello.py

import itfun_package
# init运行了

import itfun_package.pig
itfun_package.pig.fly()
# init运行了
# I Can Fly

from itfun_package import pig
pig.fly()
# init运行了
# I Can Fly

__init__ 的作用

可以看到,import 包,本质就是加载并执行该包下的 __init__.py 文件。除了初始化运行外,还有一个作用是在 __init__.py 里导入这个包自己的模块。从上面的代码,可以看到如果要调用 flyimport 的比较繁琐。代码修改如下

__init__.py

print("init 运行了")

from .pig import fly
# from .pig import *

* 是导入所有模块

hello.py

import itfun_package

itfun_package.fly()