源本科技 | 码上会

Python 一等函数

2026/01/17
6
0

学习目标

  • 理解 Python 中“一等函数”的概念及其核心特征

  • 掌握将函数赋值给变量的方法

  • 学会将函数作为参数传递和从函数中返回

  • 了解如何将函数存储在列表、字典等数据结构中

  • 能够利用一等函数特性编写更灵活、可复用的代码


什么是一等函数

在 Python 中,函数是一等对象(first-class objects)。这意味着函数可以像整数、字符串或其他变量一样被操作。具体来说,你可以:

  • 将函数赋值给变量

  • 将函数作为参数传递给其他函数

  • 从函数中返回另一个函数

  • 将函数存储在列表、字典等数据结构中

这种特性使得 Python 支持高阶函数函数式编程风格,从而提升代码的模块化程度与复用性。


将函数赋值给变量

你可以把一个函数名赋给另一个变量,然后通过该变量调用原函数。

def greet(name):
    return f"你好,{name}!"

# 将函数赋值给变量
say_hello = greet

# 通过变量调用函数
print(say_hello("小明"))

输出:

你好,小明!

说明greet 函数被赋给了变量 say_hello,之后 say_hello 就可以像函数一样被调用。这体现了函数在 Python 中如同普通对象一样可被引用。


将函数作为参数传递

函数可以作为参数传入另一个函数,这是实现回调机制高阶函数的基础。

def greet(name):
    return f"你好,{name}!"

def execute(func, name):
    return func(name)

# 将 greet 函数作为参数传入 execute
result = execute(greet, "小红")
print(result)

输出:

你好,小红!

说明execute 函数接收一个函数 func 和一个名字 name,然后调用 func(name)。这种模式广泛用于如 map()filter() 等内置函数中。


从函数中返回函数

一个函数可以定义并返回另一个函数,常用于创建函数工厂或实现闭包

def create_message(template):
    def inner():
        return f"提示信息:{template}"
    return inner

# 获取内部函数
message_func = create_message("系统已启动")
print(message_func())

输出:

提示信息:系统已启动

说明create_message 返回了内部定义的 inner 函数。即使 create_message 执行完毕,inner 仍能访问其作用域中的 template 变量,这就是闭包的体现。


将函数存储在数据结构中

函数可以像普通值一样存入列表、字典等容器中,便于动态调用。

def add(x, y):
    return x + y

def subtract(x, y):
    return x - y

# 将函数存入字典
operations = {
    "加法": add,
    "减法": subtract
}

# 动态调用
print(operations["加法"](10, 5))      # 输出:15
print(operations["减法"](10, 5))      # 输出:5

说明:通过字典键选择要执行的操作,使程序更具扩展性和可配置性。例如,可用于实现命令分发器或插件系统。


重点总结

  • Python 中的函数是一等对象,具备与其他数据类型相同的权利。

  • 支持四大核心操作:赋值、传参、返回、存储

  • 这些特性是实现高阶函数装饰器闭包函数式编程的基础。

  • 合理使用一等函数可显著提升代码的灵活性可维护性


思考题

  1. 为什么说“函数是一等对象”对编写模块化代码有帮助?请结合实际场景举例说明。

  2. 如果将多个函数存入列表,如何遍历并依次调用它们?请写出示例代码。

  3. 在 Web 框架(如 Flask)中,路由装饰器是如何利用“函数作为参数”这一特性的?