Python 嵌套函数

Python 中的嵌套函数,简单来说就是在一个函数的内部定义另外一个函数。不过在内部定义的函数只能在内部调用,如果在外部调用,就会出错。

示例:Python 嵌套函数用于计算阶乘

def fn(a):
    # 定义内部函数
    def multi(x):
        return x * x
    m = 1
    for i in range(1, multi(a) + 1):
        m = m * i
    return m

result = fn(2) + fn(3)
print(result)

运行结果如下。

362904

分析:

上面示例定义了一个名为 fn 的函数,该函数有一个参数 a。然后在 fn() 内部定义了一个函数 multi()。其中 multi() 作为一个内部函数,只能在函数 fn() 内部使用。

对于 fn(2),我们把 2 作为实参传进去,此时 fn(2) 等价于下面代码。

def fn(2):
    def multi(2):
        return 2 * 2
    m = 1
    for i in range(1, multi(2) + 1):
        m = m * i
    return m

从上面可以看出,fn(2) 实现的是 1 × 2 × 3 × 4,也就是 4 的阶乘。同理,fn(3) 实现的是 1 × 2 × … × 9,也就是 9 的阶乘。

Python 嵌套函数的功能非常强大,并且与 “闭包” 这个高级概念有着直接的关系。如果小伙伴们刚接触 Python,暂时不必深入了解闭包。

常见问题

1. 为什么要把 multi 定义在 fn 内部?

这样做是为了 “隐藏” 逻辑。如果 multi 函数只是为了辅助 fn 完成计算,而不需要在程序的其他地方使用,那么把它定义在内部可以避免污染外部的命名空间,让代码更加整洁和安全。

上一篇: Python 函数参数

下一篇: Python 递归函数

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号