python-day14--带参数的装饰器+多个装饰器装饰同一个函数

1.# 带参数的装饰器def f1(flag):    def f2(func):        def inner(*args,**kwargs):            if flag:                ‘‘‘执行函数之前要做的‘‘‘            r=func(*args,**kwargs)            if flag:                 ‘‘‘执行函数之后要做的‘‘‘            return r        return inner    return f2@f1(True)def f3():    print(‘egon‘)    return (‘eva‘)s=f3()print(s)

2.#多个装饰器装饰一个函数
def qqxing(func):    def qqxing_inner(*args,**kwargs):        print(‘in qqxing:before‘)        ret = func(*args,**kwargs)        print(‘in qqxing:after‘)        return ret    return qqxing_inner

def pipixia(func):    def pipixia_inner(*args,**kwargs):        print(‘in pipixia:before‘)        ret = func(*args,**kwargs)        print(‘in pipixia:after‘)        return ret    return pipixia_inner

@qqxing@pipixia   def dapangxie():    print("饿了么")dapangxie()

#应用场景

#func#1.计算func的执行时间 @timmer#1.登录认证 #@auth

#@auth   #先登录 在认证#@timmer#func

#解耦  尽量的让代码分离。小功能之间的分离#解耦的目的 提高代码的重用性
时间: 2024-10-11 04:19:15

python-day14--带参数的装饰器+多个装饰器装饰同一个函数的相关文章

python生成带参数二维码

#coding:utf8 import urllib2 import urllib import json import string import random class WebChat(object): def __init__(self, appid=None, secret=None, code=None): self.appid = appid self.secret = secret self.code = code def token_url(self): return "htt

Python中带参数的装饰器

装饰器本身是用来是为一个函数是实现新的功能,并且不改变原函数的代码以及调用方式. 遇到这样一种问题: 众多函数调用了你写的装饰器,但客户有需求说,我想实现我可以随之控制装饰器是否生效. 那你就不可能在得到命令的时候去原函数头部去做删除和添加装饰器调用的命令.这是就可以用到带参数的装饰器,定义一个开关,调用装饰器的时候,把这个装饰器的开关参数给传递进去,这样当开关打开的时候装饰器生效,关闭的时候则只执行原函数的代码. 举例:开关参数为True的时候执行过程: 1 F = True #step 1

python基础 带参数以及返回值的函数装饰器

1 #带参数以及返回值的函数装饰器,上一篇博客记录了无参数函数装饰器写法以及使用方案,当函数有参数以及返回值时需要将装饰器进行如下修稿 2 def timer(fun): 3 def deco(*args,**kwargs): #被装饰函数实际是执行deco,所以在此将被装饰函数参数进行传递 4 start_time = time.time() 5 res = fun(*args,**kwargs) #将被装饰函数的返回值接收 6 stop_time = time.time() 7 return

Python基础-----带参数验证功能的装饰器

#带参数,可以根据不同的认证类型进行认证 user_list = [ {'name':'a','password':'123'}, {'name':'b','password':'123'}, {'name':'c','password':'123'}, {'name':'d','password':'123'}] #所有用户信息列表(值为字符串类型) current_user = {'username':None,'login':False} #记录用户当前登录状态 def auth(auth

python自带库及第三方库api察看

今天发现一个很有意思的功能,python自带了所有库的文档查看器,配置如下: 配置pydoc服务,cmd中输入如下代码: python –m pydoc –p 1234 回车后 ,使用过程中,该窗口不要关闭. 然后,在浏览器中输入网址:http://localhost:1234/ ,打开python自带的及集成的第三方库的api. 界面类似如下: 此工具对于察看第三方库的帮助文档非常方便

JS中setInterval、setTimeout不能传递带参数的函数的解决方法

setInterval 和 setTimeout 这两个函数比较好用,但会遇到比如说我隔个几秒后要执行的函数是带参数的,这种情况怎么办?可以用匿名函数包装处理 //不带参数的函数 function test(){} setTimeout(test,1000) //带参数的函数,用匿名函数包装(可以实现动态传参) function onemodelanima(o, tobestatus, time, easing, origin){ if(easing == null){ easing = "&q

带参数的Mixin

带参数的mixin 在Less中,还可以像函数一样定义一个带参数的mixin, 这种形式叫做 Parametric Mixin,即带参数的混入.如: // 定义一个样式选择器 .borderRadius(@radius){     border-radius: @radius; } 然后,在其他选择器中像这样调用它: // 使用已定义的样式选择器 #header {     .borderRadius(10px);   // 把 10px 作为参数传递给样式选择器 } .btn {     .b

Qt带参数的信号,和指针函数和函数指针

一:Qt带参数的信号 main.cpp #include "widget.h" #include "slot.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); //查找QApplication()的相关资料 Widget w; w.show(); return a.exec(); } widget.cpp #include &

python带参数和不带参数装饰器

http://blog.csdn.net/pipisorry/article/details/41902599 对于无参数的装饰器,其装饰器函数的参数是要被装饰的函数对象名: 对于有参数的装饰器在调用时使用的是应用的参数,@timeStumpFunc_args(argv)的argv,已不再是要被装饰的函数对象名,所以必须在内部再定义一个函数getfunc()来接收要被装饰的函数对象. #!/usr/bin/env python # coding=gbk """ __title

Python带参数的装饰器

在装饰器函数里传入参数 # -*- coding: utf-8 -*- # 2017/12/2 21:38 # 这不是什么黑魔法,你只需要让包装器传递参数: def a_decorator_passing_arguments(function_to_decorate): def a_wrapper_accepting_arguments(arg1, arg2): print("I got args! Look:", arg1, arg2) function_to_decorate(ar