Python中的函数和模块:正确编写干净、可复用的代码

发布: (2026年1月1日 GMT+8 10:58)
10 min read
原文: Dev.to

Source: Dev.to

请提供您希望翻译的具体文本内容(除代码块和 URL 之外),我将为您翻译成简体中文并保持原有的 Markdown 格式。

如果你曾经看过一个 Python 程序并想,“这越来越乱了”,你并不孤单

随着程序规模的增长,除非妥善组织,否则管理代码会变得更加困难。这正是 functions and modules in Python 发挥作用的地方。

把它们想象成帮助你编写更易读、可复用、可测试、可扩展代码的工具。无论你是刚学习 Python 基础的初学者,还是想提升代码质量的开发者,掌握函数和模块都是一个转折点。

在本文中,我们将以初学者友好的方式拆解所有内容,结合现实类比、简洁示例和实用见解——不堆砌术语,也不机械解释。

为什么函数和模块在 Python 中很重要

问题

The same code appears again and again
One small change requires edits in multiple places
The file grows to hundreds of lines

这是一种让人沮丧的配方。

解决方案

函数和模块帮助你:

  • 避免重复(DRY 原则 – Don’t Repeat Yourself
  • 提升可读性
  • 简化调试
  • 更好地与他人协作
  • 在不混乱的情况下扩展项目

在实际的 Python 项目中,清晰的结构不是可选的——它是必需的。

理解 Python 中的函数

什么是函数?

函数是一段可重复使用的代码块,用于执行特定任务。与其多次编写相同的逻辑,你只需定义一次,然后在需要时调用它。

现实生活类比:
函数就像咖啡机。你按下按钮(调用函数),它就会执行固定的任务——不必每次都重新发明这个过程。

Python 函数的基本语法

def greet():
    print("Hello, welcome to Python!")

调用函数

greet()

这里发生了什么?

  • def 用于定义函数
  • greet 是函数名
  • 圆括号 () 用来放置参数(如果有的话)
  • 缩进定义函数体

带参数和实参的函数

当函数能够接受输入时,它们就变得更加强大。

def greet(name):
    print(f"Hello, {name}!")

调用方式

greet("Omkar")

为什么参数很重要

  • 灵活 – 同一个函数可以处理不同的数据
  • 动态 – 行为可以在运行时改变
  • 可复用 – 不需要硬编码值

从函数返回值

函数不仅可以执行操作,还可以返回结果。

def add(a, b):
    return a + b

使用方法

result = add(5, 3)
print(result)   # 8

关键要点

  • return 将值发送回调用者
  • return 之后的代码不会执行
  • 返回值对于计算、数据处理以及基于逻辑的程序至关重要

Python 中的函数类型

类型描述示例
内置函数随 Python 附带的函数print(), len(), type(), sum()
用户自定义函数使用 def 创建的函数见上面的示例
匿名(Lambda)函数没有名称的简短单行函数square = lambda x: x * x
print(square(4))

最佳使用场景

  • 简单操作
  • 临时逻辑
  • 更简洁的函数式代码

编写 Python 函数的最佳实践

编写函数不仅仅是语法问题——更在于清晰度。养成以下习惯:

  • 保持函数 小且专注
  • 使用 描述性的函数名
  • 避免 参数过多(需要时更倾向使用对象或字典)
  • 编写 可复用的逻辑
  • 添加 docstring 以提升可读性

示例

def calculate_discount(price, discount):
    """
    Calculates final price after discount.

    Parameters
    ----------
    price : float
        Original price.
    discount : float
        Discount percentage (e.g., 20 for 20%).

    Returns
    -------
    float
        Price after discount.
    """
    return price - (price * discount / 100)

整洁的函数为未来的你(以及你的团队成员)节省时间。


什么是 Python 中的模块?

如果函数组织逻辑,模块组织文件。一个 模块 简单来说就是一个 Python 文件(.py),其中包含:

  • 函数
  • 变量

现实世界类比:
如果函数是工具,模块就是工具箱。

为什么使用模块?

模块可以帮助你:

  • 将大型程序拆分成更小的文件
  • 提高可维护性
  • 在不同项目之间复用代码
  • 避免脚本杂乱无章

专业的 Python 项目几乎总是使用多个模块。

创建自己的 Python 模块

  1. 创建一个名为 math_utils.py 的文件:

    # math_utils.py
    def multiply(a, b):
        return a * b
    
    def divide(a, b):
        return a / b
  2. 在另一个文件中使用它:

    # main.py
    import math_utils
    
    print(math_utils.multiply(4, 5))   # 20

就这样——你已经创建并使用了一个 Python 模块。

导入模块的不同方式

导入方式语法何时使用
导入整个模块import math_utils一般使用;保持命名空间清晰
导入特定函数from math_utils import multiply小型工具函数;避免使用冗长的模块名
使用别名import math_utils as mu大型模块;提升可读性

提示: 在实际项目中避免使用 from module import *——它会污染命名空间,使代码更难理解。

您应该了解的内置 Python 模块

Python 的标准库功能强大。一些常用模块:

  • math – 数学运算
  • datetime – 日期和时间处理
  • random – 随机数生成
  • os – 与操作系统交互
  • sys – 系统特定参数

示例

import math

print(math.sqrt(16))   # 4.0

对于许多常见任务,您不需要外部库。


如何函数和模块协同工作

在实际项目中:

  • Functions 处理逻辑
  • Modules 组织这些函数

示例项目结构

project/
│── main.py
│── auth.py
│── utils.py

每个模块都有明确的职责。这样的结构:

  • 提高可读性
  • 加快调试速度
  • 帮助团队并行工作

这就是生产级 Python 应用的构建方式。


初学者常犯的错误

让我们帮你省点儿痛苦。避免这些陷阱:

  • 编写 非常大的函数
  • 使用 不明确的函数名
  • 忘记在需要时返回
  • 在模块之间创建 循环导入
  • 所有代码放在一个文件

良好的结构应在早期学习——并在以后受益。


这在实际 Python 项目中的帮助

无论你是:

  • 编写脚本
  • 处理数据
  • 开发 API

…或任何其他基于 Python 的工作,掌握函数和模块将使你的代码:

  • 更简洁
  • 更易维护
  • 更易测试
  • 更具可扩展性

祝编码愉快!

自动化任务

编写后端服务

函数和模块帮助您:

  • 更快调试
  • 轻松添加功能
  • 无惧重构
  • 从小脚本扩展到完整应用

它们不是“高级概念”——而是 Python 的基础要点。


SEO洞察:为何此主题重要

搜索兴趣围绕:

  • functions in Python
  • Python modules explained
  • Python reusable code
  • Python basics for beginners

…随着 Python 在自动化、人工智能和后端开发等领域的主导地位,这一趋势持续增长。

提前掌握这些概念有助于提升学习速度并改善代码质量。


最终思考:像专业人士一样写 Python

函数和模块不仅仅是语法——它们是一种思维方式。

如果你:

  • 编写小而专注的函数
  • 将代码组织成有意义的模块
  • 遵循整洁的编码实践

你不仅会写出更好的 Python,还会更享受编程的过程。

  • 从小做起。
  • 经常重构。
  • 把未来的自己当作最重要的用户。

一旦你掌握了 Python 中的函数和模块,其他一切都会变得更容易。

Back to Blog

相关文章

阅读更多 »

我的简易井字游戏

作为 Codecademy 项目作品系列的一部分,我构建了一个交互式的 Tic‑Tac‑Toe 游戏,完全在终端中运行。这是我的第一个完整的 Python…

Python 日志:从 print() 到生产

使用 print 的问题:python printf'Processing user {user_id}' printf'Error: {e}' 缺少的内容:- 没有时间戳 - 没有日志级别 - 没有文件输出 - Can't fil...