1. 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.  
  3. 2.#有参装饰器
  1. def auth(auth_type): #auth_type='mysql'
    def auth2(func):
    def inner(*args,**kwargs):
    if auth_type == 'file':
    name=input('name:>> ')
    pwd=input('password:>> ')
    if name == 'egon' and pwd == '123':
    res=func(*args,**kwargs)
    return res
    else:
    print('auth error')
    elif auth_type == 'mysql':
    print('mysql auth')
    else:
    print('not valid auth source')
    return inner
    return auth2
  2. @auth(auth_type='mysql') #@auth2 #index=auth2(最原始的index) #index=inner
    def index(name):
    print('welcome %s to index' %name)
  3. index('egon') #inner('egon')
  1.  
  2. 2.#多个装饰器装饰一个函数
  1. 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
  2. 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
  3. @qqxing
    @pipixia
    def dapangxie():
    print("饿了么")
    dapangxie()
  4. #应用场景
  5. #func
    #1.计算func的执行时间 @timmer
    #1.登录认证 #@auth
  6. #@auth #先登录 在认证
    #@timmer
    #func
  7. #解耦 尽量的让代码分离。小功能之间的分离
    #解耦的目的 提高代码的重用性

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

  1. python:带参数的装饰器,函数的有用信息

    一.带参数的装饰器,函数的有用信息 def func1(): '''此函数的功能是完成的登陆的功能 return: 返回值是登陆成功与否(true,false) ''' print(333) func ...

  2. Python不带参数的类装饰器

    # -*- coding: utf-8 -*- # author:baoshan # 不带参数的类装饰器 # 类装饰器的实现,必须实现__call__和__init__两个内置函数. # __init ...

  3. Python中带参数的装饰器

    装饰器本身是用来是为一个函数是实现新的功能,并且不改变原函数的代码以及调用方式. 遇到这样一种问题: 众多函数调用了你写的装饰器,但客户有需求说,我想实现我可以随之控制装饰器是否生效. 那你就不可能在 ...

  4. Python - 关于带参数的装饰器的理解

    [原创]转载请注明作者Johnthegreat和本文链接 关于装饰器的理解,特别像<盗梦空间>中的进入梦境和从梦境出来的过程,一层一层的深入梦境,然后又一层一层的返回,被带入梦境的是被装饰 ...

  5. python 脚本带参数

    如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢? 需要模块:sys参数个数:len(sys.argv)脚本名:    sys.argv[0]参数 ...

  6. python生成带参数二维码

    #coding:utf8 import urllib2 import urllib import json import string import random class WebChat(obje ...

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

    今天发现一个很有意思的功能,python自带了所有库的文档查看器,配置如下: 配置pydoc服务,cmd中输入如下代码: python –m pydoc –p 1234 回车后 ,使用过程中,该窗口不 ...

  8. 带参数的Mixin

    带参数的mixin 在Less中,还可以像函数一样定义一个带参数的mixin, 这种形式叫做 Parametric Mixin,即带参数的混入.如: // 定义一个样式选择器 .borderRadiu ...

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

    setInterval 和 setTimeout 这两个函数比较好用,但会遇到比如说我隔个几秒后要执行的函数是带参数的,这种情况怎么办?可以用匿名函数包装处理 //不带参数的函数 function t ...

  10. Python带参数的装饰器

    在装饰器函数里传入参数 # -*- coding: utf-8 -*- # 2017/12/2 21:38 # 这不是什么黑魔法,你只需要让包装器传递参数: def a_decorator_passi ...

随机推荐

  1. 笔试题二(java面向对象、多线程、集合)

    1.final关键字的特点 final修饰变量时,在堆内存中的地址是不变的,但对象的内容是可变的.//思考,找例子 2.静态变量的特点 实例变量是用对象引用,要先实例化对象,而静态变量属于类,只要类加 ...

  2. TED #10# A rite of passage for late life

    Bob Stein: A rite of passage for late life Collection I grew up white, secular and middle class in 1 ...

  3. php打印负载函数、Linux awk打印负载

    php的sys_getloadavg sys_getloadavt()可以获得系统负载情况.该函数返回一个包含三个元素的数组,每个元素分别代表系统再过去的1.5和15分钟内的平均负载. 与其让服务器因 ...

  4. P2260 [清华集训2012]模积和

    P2260 [清华集训2012]模积和 整除分块+逆元 详细题解移步P2260题解板块 式子可以拆开分别求解,具体见题解 这里主要讲的是整除分块(数论分块)和mod不为素数时如何求逆元 整除分块:求Σ ...

  5. web应用下的安全问题以及tomcat/nginx对应解决方法(持续更新、亲测可解决问题)

    最近一券商那边扫描反馈了下面几个非业务型安全漏洞,要求解决,如下: XSS 自己写个脚本response的时候对特殊字符进行了处理,或者网上搜下一堆(不要忘了回车.换行). HTML form wit ...

  6. java service wrapper日志参数设置及优化

    一般在容器比如tomcat/weblogic中运行时,我们都是通过log4j控制日志输出的,因为我们现在很多服务端使用java service wrapper(至于为什么使用jsw,原先是比较排斥使用 ...

  7. 第八篇:支持向量机 (SVM)分类器原理分析与基本应用

    前言 支持向量机,也即SVM,号称分类算法,甚至机器学习界老大哥.其理论优美,发展相对完善,是非常受到推崇的算法. 本文将讲解的SVM基于一种最流行的实现 - 序列最小优化,也即SMO. 另外还将讲解 ...

  8. 解决Navicat Premium 12 连接oracle数据库出现ORA-28547的问题

    1. 出现的问题... 下午工作时想连接Oracle数据库,使用的是Navicat Premium 12 . 数据库地址.用户名.密码.端口号都没有问题,但出现了ORA-28547:connectio ...

  9. Python3基础 response.getcode 得到http的状态 200表示正常

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  10. Dell Vostro5370安装Win10/Ubuntu18LTS

    如何安装Win10/Ubuntu双系统 测试环境: DELL PRECISION 7510: CPU:Intel Core i5-6300HQ HD:256G NVME SSD 操作步骤: 无损将硬盘 ...