装饰器:装饰器为主,闭包和高阶函数为辅

简介: 装饰器:装饰器为主,闭包和高阶函数为辅

装饰器   =  高阶函数 +  闭包

1.什么是闭包;

# 闭包:就是不执行,等待调用状态
def fun():
    print("执行函数")
f = fun
print(type(f),f)
# <class 'function'> <function fun at 0x000002139B203438>

2.什么是高阶函数

#高阶函数:只要参数或者返回值是函数那么就是高阶函数
def fun1():
    pass
def superFun(fun):
    pass
fun = fun1
superFun(fun)

3.1基本装饰器

# 目的:在不改变源代码的前提下,添加功能
def beforFun(fun):
    def inner(*args,**kwargs):
        print(f"业务代码{args},{kwargs}")
        return fun(*args,**kwargs)
    return inner

@beforFun
def main(key):
    print("主函数")
main(6)

3.2带参数的装饰器

# 目的:在不改变源代码的前提下,添加功能
def HHHH(key):
    def beforFun(fun):
        def inner(*args, **kwargs):
            print(key)
            print(f"业务代码{args},{kwargs}")
            return fun(*args, **kwargs)
        return inner
    return beforFun

@HHHH("hhhhhh")
def main(a):
    print("主函数")
main(6)

4.如果要保留装饰器原函数 的基本属性

# 在装饰器中使用,保留原函数的属性,加上wraps
from functools import wraps
相关文章
|
5月前
|
测试技术 Python
装饰器
【8月更文挑战第1天】
28 2
|
8月前
|
JavaScript
03_装饰器
03_装饰器
73 1
|
PHP 开发者
匿名函数闭包|学习笔记
快速学习匿名函数闭包
匿名函数闭包|学习笔记
|
JSON 数据格式
装饰器的实际应用
使用装饰器模式改造slf4j打印json格式日志
774 0
装饰器的实际应用
|
缓存 测试技术 Python
【Python函数式编程】——装饰器
装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值 也是一个函数对象。 它经常用于有以下场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景,装饰器是解决这类问题的绝佳设计。
159 0
【Python函数式编程】——装饰器
|
Python 容器
【globlal与nonlocal和闭包函数、装饰器、语法糖】
【globlal与nonlocal和闭包函数、装饰器、语法糖】
128 0
|
设计模式 程序员 Python
Python函数装饰器指南
Python 具有强大的功能和富有表现力的语法。我最喜欢的装饰之一。在设计模式的上下文中,装饰器动态更改方法或类功能,而不必直接使用子类。当您需要扩展功能,但不想修改原函数时,这是理想的选择。我们可以在任何地方实现装饰器模式,但是 Python 通过提供更具表现力的功能和语法来促进实现。
134 0
匿名函数和闭包
首先,一个函数不管是不是匿名函数,和闭包之间根本没有任何关系! 所谓闭包究竟是什么?网络上说法云里雾里,讲得高深莫测,但是其实只要稍微有一些编译器实现机制的认识,就会知道闭包其实是非常简单的东西。 我们先来看看下面的代码: function funcA() {     var a = 1, b = 2;     return funcB();           fun
1504 0