由于语法糖@的限制,outter函数只能有一个参数,并且该才是只用来接收被装饰对象的内存地址

def outter(func):def wrapper(*args,**kwargs):res=func(*args,**kwargs)return resreturn wrapper@outter
def index(x,y):print(x,y)

语法糖

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def auth(db_type):def deco(func):def wrapper(*args, **kwargs):name = input('your name>>>: ').strip()pwd = input('your password>>>: ').strip()if db_type == 'file':print('基于文件的验证')if name == 'egon' and pwd == '123':res = func(*args, **kwargs)  return reselse:print('user or password error')elif db_type == 'mysql':print('基于mysql的验证')else:print('不支持该db_type')return wrapperreturn deco@auth(db_type='file')
def index(x, y):print('index->>%s:%s' % (x, y))@auth(db_type='mysql')
def home(name):print('home->>%s' % name)# index(1, 2)
# home('egon')

有参装饰器模板

def 有参装饰器(x,y,z):def outter(func):def wrapper(*args, **kwargs):res = func(*args, **kwargs)return resreturn wrapperreturn outter@有参装饰器(1,y=2,z=3)
def 被装饰对象():pass

python教程:有参装饰器相关推荐

  1. 廖雪峰python教程笔记:装饰器

    这是看廖老师python教程的第一个的笔记,因为这是这份教程最难的章节之一,我来来回回看了三遍,终于有所突破,写在这里是为了巩固自己的理解,同时也是希望有错的地方能够得到指正.具体内容见廖雪峰老师的课 ...

  2. 廖雪峰python教程学习:装饰器@小结

    装饰器@小结 廖雪峰老师的python教程 在代码运行期间动态增加功能的方式,称为装饰器 本质上,装饰器是一个可以返回函数的高阶函数 最基本的可以定义如下: def log(func):@functo ...

  3. Python基础教程:带参装饰器、生成器、迭代器、for循环迭代器、枚举

    带参装饰器 装饰器为被装饰的函数添加新功能,需要外界参数 outer参数固定一个,就是func inner参数固定和被装饰的参数固定,也不能添加新参数 可以借助函数的嵌套定义,外层给内层传参 def ...

  4. 【Python学习教程】:装饰器的详细教程,通俗易懂

    装饰器是Python中的一个重要概念,多用于在不修改原函数的基础上,为函数增加额外的功能. 基础装饰器 例如小李给女朋友买了一款iPhone12作为生日礼物,手机原封未拆封. def gift():p ...

  5. python基础教程:函数装饰器详解

    谁可以作为装饰器(可以将谁编写成装饰器): 函数 方法 实现了__call__的可调用类 装饰器可以去装饰谁(谁可以被装饰): 函数 方法 类 基础:函数装饰器的表现方式 假如你已经定义了一个函数fu ...

  6. python有参装饰器 多个装饰器装饰一个

    1.有参装饰器 基本版 def auth(argv):def wrapper(f):def inner(*args,**kwargs):f(*args,**kwargs)return innerret ...

  7. 在Python中的无参装饰器和有参装饰器

    装饰器特点: 1.开放封闭原则,即对扩展是开放的,对修改时封闭的: 2.装饰器本质可以是任意可调用的对象,被装饰的对象也可以是任意可调用对象: 3.装饰器的功能是在不修改被装饰器对象源代码以及被装饰器 ...

  8. python中的无参装饰器和有参装饰器

    python中的无参装饰器和有参装饰器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 装饰器特点: 1>.开放封闭原则,即对扩展是开放的,对修改时封闭的: 2>.装饰器 ...

  9. python学习Day14 带参装饰器、可迭代对象、迭代器对象、for 迭代器工作原理、枚举对象、生成器及生成表达式...

    复习 函数的嵌套定义:在函数内部定义另一个函数 闭包:被嵌套的函数 -- 1.外层通过形参给内层函数传参 -- 2.返回内部函数对象---->  延迟执行, 开放封闭原则: 功能可以拓展,但源代 ...

最新文章

  1. Java I/O 操作及优化建议
  2. 【渝粤题库】陕西师范大学200821 课程与教学论(计算机)
  3. 解决黑苹果的887驱动问题
  4. 【Flink】Insufficient number of network buffers required but only available
  5. NOX的使用之学习篇【一】
  6. 小小知识点(九)——拉盖尔高斯波束自由空间傍轴近似条件下的复振幅
  7. 软/硬件负载均衡产品 你知多少?
  8. java 方法调用表达式_java lambda怎么表达式判断被调用接口名称和接口中方法
  9. 【czy系列赛】czy的后宫4 bzoj1925 [Sdoi2010]地精部落
  10. Java多态实例主人和狗狗企鹅玩游戏
  11. 5000字:一文看懂用户运营之增长八卦模型
  12. 【转自果壳】学习没有“关键期”,现在开始就不晚
  13. Revit二次开发—内建类别BuiltInCategory枚举(中英文对照)
  14. 主成分分析(PCA)数学原理详解
  15. Delphi医保支付【支持重庆,湖南,湖北,河南,江苏,黑龙江,吉林等医保接口】
  16. ThreeJs法向贴图
  17. Jarvis-拍立淘里面的深度学习引擎
  18. 开发人员的涅槃重生路——出差
  19. https 加密、http2.0、keep-alive
  20. Lifecycle 使用与源码分析

热门文章

  1. Python探索记(01)——HelloWorld及Python的注释
  2. Sqlite使用技巧集锦
  3. 关于系统异常设计的再思考
  4. 函数集成redis与Spring集成
  5. Linux中/proc目录下文件详解(二)
  6. Agentless方式监控,让所有网络都有管理员
  7. 【转载】2009年春晚节目单提前揭晓
  8. 为ListBox添加水平滚动条
  9. Oracle里default什么意思,ORACLE中默认值default的使用方法.doc
  10. 【配置】成本组件结构定义(OKTZ)