什么是 Python 中的模块和包?

Python 中的模块和包

在 Python 中,模块(Module)包(Package) 是组织和管理代码的重要工具,它们用于提高代码的可重用性可维护性


1. 什么是模块(Module)?

模块(Module) 就是一个 Python 文件,扩展名为 .py,其中包含函数、类和变量,可以被其他 Python 代码导入和使用。

模块的创建

任何 .py 文件都是一个模块。例如,创建一个 math_utils.py 模块:

# math_utils.py
def add(a, b):
    return a + b

def multiply(a, b):
    return a * b

导入模块

在另一个 Python 文件中使用 import 语句导入模块:

import math_utils

print(math_utils.add(2, 3))      # 输出 5
print(math_utils.multiply(4, 5)) # 输出 20

模块的不同导入方式

  1. 直接导入整个模块
    import math_utils
    print(math_utils.add(2, 3))
    
  2. 导入模块中特定的函数
    from math_utils import add
    print(add(2, 3))  # 不需要 math_utils.add
    
  3. 导入所有内容(不推荐)
    from math_utils import *
    
  4. 给模块起别名
    import math_utils as mu
    print(mu.add(2, 3))
    

2. 什么是包(Package)?

包(Package) 是一个包含多个模块的文件夹,通过 __init__.py 让 Python 识别它是一个包

包的结构

my_package/          # 这是一个包
│── __init__.py      # 使 Python 识别该目录为包
│── math_utils.py    # 一个模块
│── string_utils.py  # 另一个模块

示例

  1. math_utils.py
    def add(a, b):
        return a + b
    
  2. string_utils.py
    def to_upper(s):
        return s.upper()
    
  3. __init__.py(可以为空,也可以包含包的初始化代码)
    from .math_utils import add
    from .string_utils import to_upper
    

导入包中的模块

import my_package.math_utils
print(my_package.math_utils.add(2, 3))  # 输出 5

使用 from ... import ... 语法

from my_package import math_utils
print(math_utils.add(2, 3))  # 输出 5

导入 __init__.py 中的内容

from my_package import add, to_upper
print(add(2, 3))       # 输出 5
print(to_upper("hi"))  # 输出 HI

3. 模块 vs. 包

对比项 模块(Module) 包(Package)
定义 单个 .py 文件 一个包含 __init__.py 的文件夹
作用 组织函数、类等 组织多个相关模块
导入方式 import module_name import package_name.module_name

4. 标准库中的模块

Python 自带许多模块,比如:

  • math(数学计算)
  • os(操作系统接口)
  • sys(系统参数和函数)
  • datetime(日期和时间)

示例:

import math
print(math.sqrt(16))  # 输出 4.0

总结

  • 模块(Module).py 文件,包含 Python 代码。
  • 包(Package) 是一个包含多个模块的文件夹,必须包含 __init__.py 文件。
  • 模块和包 提高了代码的组织性可维护性可重用性

使用模块和包能让 Python 项目结构更加清晰!

你可能感兴趣的:(Python基础知识,面试题,python,开发语言)