包和模块

实际开发中,我们的代码工程不可能只有一个.py文件,多个源代码文件需要以适当的目录结构来组织,Python提供了包和模块的概念来将代码分解成更小、更具逻辑性和可重用性的单元,使得代码更易于维护、复用和共享。

Module 模块

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()

Package 包

包是一个包含多个模块的目录,它通常用于组织和管理复杂项目中的模块集合。包本质上是一个包含__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相关章节,这里就不重复介绍了。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap