实际开发中,我们的代码工程不可能只有一个.py
文件,多个源代码文件需要以适当的目录结构来组织,Python提供了包和模块的概念来将代码分解成更小、更具逻辑性和可重用性的单元,使得代码更易于维护、复用和共享。
Python中一个.py
文件就是一个模块。下面例子假设我们有两个源码文件,其中demo.py
就是一个模块供main.py
引入。
demo.py
def say_hello():
print('Hello, world!')
main.py
import demo
demo.say_hello()
代码中,demo.py
内我们定义了一个函数,在main.py
中我们使用import
关键字引入了模块,引入的名字就是文件名,然后我们调用了say_hello()
函数。
引入模块还有另一种写法from ... import ...
。
from demo import say_hello
say_hello()
包是一个包含多个模块的目录,它通常用于组织和管理复杂项目中的模块集合。包本质上是一个包含__init__.py
文件的目录,__init__.py
文件可以为空也可以包含包的初始化代码。
下面例子中我们创建了一个包demo
,其中包含了一个模块printer.py
。
|_ demo
|_ __init__.py
|_ printer.py
|_ main.py
printer.py
def say_hello():
print('Hello, world!')
main.py
from demo import printer
printer.say_hello()
代码中demo/__init__.py
是空文件,但它必须存在,只有存在该文件demo
才是一个合法的包。__init__.py
中也可以包含代码,当包被导入时这些代码会被执行。
Python提供了许多内置模块,下面例子我们使用math
包的sqrt()
函数计算平方根。
import math
print(math.sqrt(3))
此外PyPI中也有很多第三方包供我们下载和使用,有关第三方包可以参考pip
相关章节,这里就不重复介绍了。