专栏首页代码世界Python之函数的进阶(带参数的装饰器)

Python之函数的进阶(带参数的装饰器)

函数篇--装饰器二

带参数的装饰器

def outer(flag):
    def timer(func):
        def inner(*args,**kwargs):
            if flag:
                print('''执行函数之前要做的''')
            re = func(*args,**kwargs)
            if flag:
                print('''执行函数之后要做的''')
            return re
        return inner
    return timer

@outer(False)
def func():
    print(111)

func()

带参数的装饰器

多个装饰器装饰同一个函数

有些时候,我们也会用到多个装饰器装饰同一个函数的情况。

def wrapper1(func):
    def inner():
        print('wrapper1 ,before func')
        func()
        print('wrapper1 ,after func')
    return inner

def wrapper2(func):
    def inner():
        print('wrapper2 ,before func')
        func()
        print('wrapper2 ,after func')
    return inner

@wrapper2
@wrapper1
def f():
    print('in f')

f()

多个装饰器装饰同一个函数

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 题型分析

    1、 简单让A、B的值交换 a,b = 1,2 print(a,b) a = 1 b = 2 a,b = b,a print(a,b) a,b=[1,2],[5...

    新人小试
  • go-并发

    Go语言的并发通过 goroutine 实现。 goroutine 类似于线程,属于用户态的线程,我们可以根据需要创建成千上万个 goroutine 并发工作。...

    新人小试
  • 装饰器进阶

    装饰带参数函数 def foo(func): # 接收的参数是一个函数名 def bar(x, y): # 这里需要定义和被装饰函数相同的参数 ...

    新人小试
  • Python全栈开发之---装饰器

    你觉得碍眼,python的开发者也觉得碍眼,所以就为我们提供了一句语法糖来解决这个问题!

    py3study
  • Python 函数作为参数传递

    #map()的功能是将函数对象依次作用于表的每一个元素,每次作用的结...

    py3study
  • 走进JavaWeb技术世界2:JSP与Servlet的曾经与现在

    本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看

    Java技术江湖
  • [java][Servlet]Servlet 简介-Servlet 到 Spring MVC 的简化之路-Servlet/Tomcat/ Spring 之间的关系

    温习一下这个传统的方式,jsp+JavaBeans,这种混合模式很虐心呀,jsp在里面夹杂着,现在大家都直接搞前后端分离了。

    landv
  • Lua date转秒数

    接到一个需求,需要从配置文件中读取活动显示时间段:startDate ~ endDate(格式为:yyyy-mm-dd HH:MM:SS),然后与服务器返回的时...

    meteoric
  • Xamarin 构建安卓失败 因为路径太长

    如果在你构建 Xamarin 安卓的时候看到如以下提示,那么请你确定以下你的应用程序路径是不是超过 250 个字符了

    林德熙
  • 大疆新品无人机曝光 即将进军穿越机市场?

    近日,网上曝光了一组大疆新品无人机,联想到3月初大疆曾向美国专利及商标局提交“Spark”的商标申领,网易无人机猜测此次的新品有可能是穿越无人机。穿越机又名竞速...

    机器人网

扫码关注云+社区

领取腾讯云代金券