首页 > 其他分享 >如何将有参数装饰器的括号去掉,当成无参数装饰器使用

如何将有参数装饰器的括号去掉,当成无参数装饰器使用

时间:2022-09-29 00:23:04浏览次数:55  
标签:start delayed wrapper hello 括号 参数 func 装饰

import time

def delayed_start(func=None, *, duration=1): # 这一层主要是装饰器参数
    def decorator(_func): # 这一层主要是将被装饰器装饰的函数传递进来
        def wrapper(*args, **kwargs): # 被装饰器装饰的函数的参数传递进来
            time.sleep(duration)
            return _func(*args, **kwargs)  # 真正执行被装饰器装饰的函数
        return wrapper
    
    if func is None:
        print(func)
        return decorator
    else:
        print("执行了。。。。。。。")
        print(func)
        return decorator(func)

"""
# 不提供任何参数,使用默认值
@delayed_start
def hello():
    pass

1.delayed_start被执行,并将hello当成参数传递给func
2.函数执行到判断func时,因为func有值,所以执行decorator(func)
4.直接返回wrapper
5.执行wrapper()
6.返回_func(),真正函数执行的地方,_func() = hello()


# 提供可选的关键字参数
@delayed_start(duration=2)
def hello():
    pass

1.delayed_start被执行,因为有关键字参数duration传递,所以func=None
2.函数执行到判断func时,因为func使用了默认值,所以执行decorator
4.并将hello传递给decorator的参数_func,返回wrapper()函数
5.执行wrapper()
6.返回_func(),真正函数执行的地方,_func() = hello()


# 提供括号调用,但不提供任何参数
@delayed_start()
def hello():
    pass
"""








标签:start,delayed,wrapper,hello,括号,参数,func,装饰
From: https://www.cnblogs.com/weiweivip666/p/16740057.html

相关文章

  • Python基础(八) | 深浅拷贝、生成器、迭代器以及装饰器详解
    ⭐本专栏旨在对Python的基础语法进行详解,精炼地总结语法中的重点,详解难点,面向零基础及入门的学习者,通过专栏的学习可以熟练掌握python编程,同时为后续的数据分析,机器学习及深......
  • Flask 学习-81.Flask-RESTX使用reqparse 解析器校验枚举类型choices 参数
    前言reqparse.RequestParser()解析器可以校验枚举类型,在add_argument中使用choices参数choices设置参数可选值比如性别设置可选项:男、女defpost(self):......
  • nginx 配置参数优化
    nginx作为高性能web服务器,即使不特意调整配置参数也可以处理大量的并发请求。以下的配置参数是借鉴网上的一些调优参数,仅作为参考,不见得适于你的线上业务。worker进程worker......
  • [Spring MVC] Controller接受参数问题,针对@RequestParam
    用实体类接收测试实体类publicclassTestEntity{privateStringname;privateIntegerage;//gettersettertoString}Controller代码@PostMapp......
  • P1944 最长括号匹配
    #include<bits/stdc++.h>usingnamespacestd;intn,ans,num;inta[1000001];chars[1000001];intmain(){ scanf("%s",s+1); n=strlen(s+1); for(inti=2;i<=n......
  • python-装饰器
    装饰器(1)什么是装饰器:器指的是工具,可以定义成函数装饰指的是为其他事务添加额外的东西来点缀上面两者合到一起:装饰器指的是定义一个函数,该函数用来为其他函数添......
  • python-函数的参数与返回值
    Python函数4.1、函数初识在编写程序的过程中,有某一功能代码块出现多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数就......
  • 使用Openfeign远程调用时参数为MultipartFile的使用注意事项
    摘要我们在使用openfeign进行远程调用时如果使用到参数为MultipartFile的情况时会有一些些许的差别注意事项//1.@RequestPart替换@RequestParam//2.consumes=MediaTy......
  • 高精度PTP时钟服务器(PTP网络时钟同步)技术参数书
    高精度PTP时钟服务器(PTP网络时钟同步)技术参数书高精度PTP时钟服务器(PTP网络时钟同步)技术参数书京准电子科技官微——ahjzsz一、PTP网络时钟服务器产品概述HR-901GB型PT......
  • 装饰器基础二装饰类的装饰器
    类可以做装饰器,也可以被装饰器装饰,被装饰器装饰,那这个装饰器可以接收一个类,返回一个类1、装饰类的装饰器-输入类返回类defadd_str(cls):def__str__(self):......