MST

星途 面试题库

面试题:Python闭包函数的基础应用

请编写一个Python闭包函数,该闭包函数用于计算一个数的多次幂。例如,外部函数接收幂次作为参数,内部函数接收底数并返回底数的指定幂次结果。并解释闭包函数中变量的作用域情况。
39.2万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
def power_of(n):
    def inner(x):
        return x ** n
    return inner


# 测试
square = power_of(2)
print(square(5))  # 输出25

闭包函数中变量的作用域情况解释

  1. 外部函数的参数和局部变量:在power_of函数中,n是外部函数的参数。这个变量在外部函数定义时被创建,并在外部函数返回内部函数inner后,依然可以被inner函数访问和使用。它的作用域虽然从power_of函数定义开始,但由于闭包的特性,在外部函数执行结束后,这个变量不会被销毁,而是被内部函数inner所引用并保留在内存中。
  2. 内部函数的参数和局部变量:在inner函数中,x是内部函数的参数。x的作用域仅在inner函数内部,当inner函数执行完毕,x相关的栈帧会被销毁,除非有其他地方对其有额外引用。而inner函数通过闭包,能够访问到外部函数power_of中的n变量,即使外部函数power_of已经返回。这是闭包的关键特性,即内部函数可以记住并访问其所在的外部函数作用域中的变量,尽管外部函数的生命周期已经结束。