赞
踩
目录
闭包就是能够读取其他函数内部变量的函数
保存外部函数的变量,不会随着外部函数调用完而销毁
# 1. 函数嵌套 # 2. 内部函数必须使用了外部函数的变量或者参数 # 3. 外部函数返回内部函数 这个使用了外部函数变量的内部函数称为闭包
示例如下:
输出结果为
这里的结果为11 其中外部函数num1 = 10 调用外部函数的变量num1 并输入参数num2 = 1
所以结果为11
实质上也是一个闭包函数,也就是说,他也是一个函数嵌套。
在不改变原函数的情况下,对已有函数进行额外的功能扩展。
# 1.不修改已有函数的源代码 # 2.不修改已有函数的调用方式 # 3.给已有函数增加额外的功能
注意与包的区别:装饰器实质上是一个闭包函数,但是装饰器这个闭包函数。他的参数有且只有一个并且是函数类型的话,他才是装饰器,否则他就是闭包函数!
示例如下:
这个装饰器的作用是 获取从1到10000循环所需的时间 添加这个计时器的功能
大概格式就是:
1.先定义一个装饰器
2.然后把装饰器加到所需装饰的函数里面 使用装饰器语法糖的方式装饰带有参数的函数
@decorator
需要装饰的函数
执行结果为:
# 以下才是万能装饰器 @decorator # 等价于 add_num = decorator(add_num) add_num = inner def add_num(*args, **kwargs): result = 0 # args: 元组 # kwargs:字典类型 for value in args: result += value for value in kwargs.values(): result += value return result @decorator def show(): # show = decorator(show) show = inner print("哈哈") show() result = add_num(1, 2) print("结果为:", result) # if __name__ == '__main__': # my = {"a": 1} # print(**my)
先定义一个类装饰器,再把类装饰器放到所需的函数上面
@MyDecorator
需要装饰的函数
实例如下:
运行结果为:
感谢提出想法 !.. !
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。