来源:python中国网 时间:2019-09-15

  在函数内部嵌套一个函数,而外部函数返回的不是一个具体的值,而是一个函数,这就是闭包。

  可以用一个变量接收返回的函数,这个变量可以在后面被继续调用。

  案例1:闭包简单语法

# -*- coding: utf-8 -*-

def test():
    def echo(para):
        print(para)
    return echo

res = test()
res('隔壁老王')

D:\python3\install\python.exe D:/pyscript/py3script/python66/python66.py
隔壁老王

Process finished with exit code 0


  案例2:计算一个数平方和立方。

# -*- coding: utf-8 -*-

def test(n):
    def get_change(m):
        return n ** m
    return get_change # 返回值是一个函数名


# 计算3的平方
fun1 = test(3)
print(fun1(2))

# 计算3的立方
fun2 = test(3)
print(fun2(3))

"""
在执行完 fun1 = test(3) 和 fun2 = test(3)后,
外部函数 test()的参数n仍然会被内部函数 get_ahange()记住。
"""



D:\python3\install\python.exe D:/pyscript/py3script/python66/python66.py
9
27

Process finished with exit code 0


  闭包让代码显的更加简洁,另外python的装饰器的原理中也会用到闭包这个知识点,随着后面的学习以及项目的开发会慢慢感受到闭包的优势,现在体会不到没关系。