闭包:
内外函数嵌套
内部函数引用外部函数作用域下的非全局变量
外函数返回内函数对象,这种内外函数嵌套的方式就是闭包
优点:为变量续命
缺点:浪费内存
2.接下来我们定义一个简单的闭包
外函数
def outer(num1, num2):
内函数
def inner():
内函数返回外函数作用域下的非全局变量
return num1 * num2
外函数返回内函数对象
return inner
调用
outer(1, 5)()
我们可以在这打印一下
print(outer(1, 5)())
装饰器
Python装饰器就是用于拓展原来函数功能的一种函数,利用了闭包的思路,
目的是在不改变原函数名(或类名)的情况下,给函数增加 新的功能。
这个函数的特殊之处在于它的返回值也是一个函数,是内部闭函数
接下来我们定义一个简单的多层装饰器语法
def outer1(func):
func是被装饰的函数
def inner(*args, **kwargs):
*args, **kwargs 接收任意参数
print("装饰器1代码1")
return func(*args, **kwargs)
print("装饰器1代码2")
return inner
def outer2(func):
def inner(*args, **kwargs):
print('装饰器2代码1')
return func(*args, **kwargs)
print('装饰器2代码2')
return inner
通过@装饰器名 使用
@outer1
@outer2
def func():
print('函数执行')
调用装饰的函数
func()
执行的顺序
"""
装饰器1代码1
装饰器2代码1
函数执行
装饰器2代码2
装饰器1代码2
"""
本文探讨了Python中闭包的概念,如何通过内外函数嵌套实现变量的持久化,以及其优缺点。同时,介绍了装饰器的原理和使用,展示了如何利用闭包的特性扩展函数功能,通过多层装饰器实现代码复用。
252

被折叠的 条评论
为什么被折叠?



