函数和模块
基础教学 1 min read

函数和模块

Blog Author

函数和模块


函数:高质量代码的基石

在 Python 中,函数(function)是将一段完成特定功能的代码封装起来,并通过名称重复调用的结构。就像数学中的函数 f(x) = x² 一样,Python 中的函数接收输入(参数),经过处理后输出结果(返回值)。函数的核心价值在于:

  • 消除重复代码
  • 提高可维护性
  • 增强模块化与复用性

应用场景与实际案例

✅ 场景1:重复运算抽象(如阶乘、组合数)

def fac(n):
    result = 1
    for i in range(2, n + 1):
        result *= i
    return result

重构阶乘函数后计算组合数变得更简洁:

print(fac(7) // fac(3) // fac(4))  # 输出 35

最佳实践:将复杂或重复计算抽象成函数,提升可读性与复用性。


定义函数的语法

def function_name(parameters):
    """函数说明文档"""
    # 代码块
    return result
  • def 是定义函数的关键字
  • function_name 是函数名
  • parameters 是参数列表(可以为空)
  • return 返回函数处理结果

函数的参数类型

1. 位置参数(按顺序传值)

def greet(name, age):
    print(f"Hello {name}, you are {age} years old.")
greet("Alice", 30)

2. 关键字参数(使用键=值形式)

greet(age=25, name="Bob")

3. 默认参数

def greet(name, age=18):
    print(f"Hello {name}, age: {age}")
greet("Carol")  # 使用默认值18

注意:默认参数必须在非默认参数之后定义。

4. *可变参数(args)**

def add(*args):
    return sum(args)
print(add(1, 2, 3))  # 6

5. **关键字可变参数(kwargs)

def print_info(**kwargs):
    for k, v in kwargs.items():
        print(f"{k} = {v}")
print_info(name="Alice", age=30)

特殊参数语法

- 强制位置参数(Python 3.8+)

def foo(a, b, /):  # 只能用 foo(1, 2),不能 foo(a=1, b=2)

- 命名关键字参数

def foo(*, a, b):  # 必须用 foo(a=1, b=2)

模块:组织函数的容器

在实际开发中,程序被拆分成多个 .py 文件,每个文件就是一个模块(module)。模块有助于:

  • 避免命名冲突
  • 复用与共享功能
  • 管理大型项目

模块使用方法

# module1.py
def greet():
    print("Hello from module1")
# test.py
import module1
module1.greet()

使用别名(as)

import module1 as m1
m1.greet()

从模块中导入函数

from module1 import greet
greet()

避免冲突:函数重命名

from module1 import greet as greet1
from module2 import greet as greet2
greet1()
greet2()

标准库模块的使用

Python 内建了大量功能强大的模块。例如:

math:数学函数

import math
print(math.factorial(5))  # 120

random:生成随机数

from random import randint
print(randint(1, 6))  # 摇骰子

time:时间操作

import time
print(time.time())  # 当前时间戳

内置函数:无需导入即可用

Python 提供的常用 内置函数 包括:

函数 功能描述
abs(x) 求绝对值
len(s) 获取长度
max(), min() 最大最小值
sum() 求和
input() 用户输入
print() 输出
type() 类型判断
range() 生成范围整数序列
round(x, d) 四舍五入到d位小数

实战:设计可复用模块

假设我们要设计一个“几何工具模块”,可以将常用函数封装在一个模块中:

geometry.py

def is_triangle(a, b, c):
    return a + b > c and a + c > b and b + c > a


def triangle_area(a, b, c):
    if not is_triangle(a, b, c):
        return None
    s = (a + b + c) / 2
    return (s*(s - a)*(s - b)*(s - c)) ** 0.5

使用:

from geometry import triangle_area
print(triangle_area(3, 4, 5))  # 6.0

最佳实践总结

函数设计原则

  1. 每个函数只做一件事
  2. 函数命名语义清晰(动词+名词组合)
  3. 尽量使用默认参数、可变参数提升灵活性
  4. 编写函数说明文档(docstring)

模块组织建议

  • 每个模块聚焦一个主题或功能
  • 命名与模块内容一致(如 math_utils.py
  • 使用 import/from...import 统一管理依赖

总结:函数与模块的威力

特性 函数 模块
作用 封装逻辑、避免重复 封装文件、组织函数与类
调用方式 func() module.func()
共享与复用 通过参数复用逻辑 通过 import 重用结构
开发目标 高内聚、低耦合、可测试 可维护、可分工、可扩展

函数让代码更整洁,模块让项目更清晰。函数是程序的基本单元,模块是程序的结构支柱。

学好函数与模块,等于掌握了编写结构化、高复用、高质量 Python 程序的核心能力!