简单说说Python里面的「函数是第一公民(First-Class Citizen)」

在函数式编程里面有一个说法,是说“函数是第一公民”(First-Class Citizen),但这玩意就这么放在这,谁知道是啥意思,对新手来说可能很莫名其妙。

简单来说,这意味着函数在编程语言中拥有与其他数据类型(如整数、字符串、列表)完全平等的地位。你可以像对待普通数据一样,对函数进行各种操作。

在 Python 中,这一点体现得尤为清晰。具体来说,函数作为“第一公民”主要体现在以下三个方面:

1. 函数可以被赋值给变量

你可以将一个函数赋值给一个变量,之后就可以通过这个变量名来调用该函数,就像调用原始函数一样。

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

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

# 通过变量调用函数
print(say_hello("Alice"))  # 输出: Hello, Alice!

2. 函数可以作为参数传递给其他函数

你可以将一个函数作为参数,传递给另一个函数。接收函数的这个函数被称为“高阶函数”。Python 内置的 map() 和 filter() 就是典型的高阶函数。

def apply_operation(func, value):
    return func(value)

def square(x):
    return x * x

# 将 square 函数作为参数传递给 apply_operation
result = apply_operation(square, 5)
print(result)  # 输出: 25

3. 函数可以作为其他函数的返回值

一个函数在执行后,可以返回另一个函数。这种特性是构建“装饰器”和实现“函数组合”等强大模式的基础。

def create_multiplier(factor):
    # 定义一个内部函数
    def multiplier(x):
        return x * factor
    # 返回这个内部函数
    return multiplier

# 调用 create_multiplier,得到一个预置了乘数的新函数
double = create_multiplier(2)
triple = create_multiplier(3)

print(double(5))  # 输出: 10
print(triple(5))  # 输出: 15

也就是说,所谓将函数视为“第一公民”,就可以粗略认为是“函数能当变量、参数、返回值来用”,这就赋予了编程极大的灵活性和抽象能力,使得代码更加简洁、模块化,也更易于复用和测试。

预览时标签不可点

Close

更多

Name cleared

微信扫一扫赞赏作者

Like the AuthorOther Amount

赞赏后展示我的头像

作品

暂无作品

Like the Author

Other Amount

¥

最低赞赏 ¥0

OK

Back

Other Amount

更多

赞赏金额

¥

最低赞赏 ¥0

1

2

3

4

5

6

7

8

9

0

.

Python语言程序设计 · 目录

Python语言程序设计

上一篇Huan-一个把网页转换成 Markdown的Python 小工具

Close

更多

搜索「」网络结果

Close

调整当前正文文字大小

更多

100%