当前位置: 首页 > news >正文

装饰器

# -*- coding:utf-8 -*-
def
outer(func): def inner(): print("hello") r=func() print("byebye") return r return inner @outer def f1(): print("lvjy") f1() #@的作用: #1.执行outer函数,并且将其下面的函数名当作参数 #2.将outer的返回值重新赋值给f1=outer的返回值
#@符号等价于f2=outer(f1) f2()

 

原函数带参数:

def decorator(func):
    def inner(a,b):
        print("before add")
        ret=func(a,b)
        print('a+b=',ret)
        print("after add")
        return ret
    return inner

@decorator
def add(a,b):
    return a+b

add(1,2)


装饰器可以接收任意个参数

def decorator(func):
    def inner(*args,**kwargs):
        print("before operation")
        ret=func(*args,**kwargs)
        print(ret)
        print("after operation")
        return ret
    return inner

@decorator
def add(a,b):
    return a+b

@decorator
def double(a):
    return 2*a

add(1,2)
double(4)


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

 

装饰器的应用:在登录时进行用户的权限认证

 

转载于:https://www.cnblogs.com/lvjygogo/p/8527318.html

相关文章:

  • vue属性用法
  • netbeans 正则替换
  • Go语言学习笔记(八)golang 操作 Redis Mysql RabbitMQ
  • [转]23种设计模式全解析
  • pycharm 教程(一)安装和首次使用
  • 最优化 凸集、凸函数
  • 如何培养良好的编程风格
  • php 设计模式
  • UNDO及MVCC、崩溃恢复
  • 配置 Debian Stretch 的安装源
  • 特斯拉主动召回,有5.3万辆车刹住了之后就没法继续开走了
  • 网友恶搞,网约车细则催生“滴滴相亲”APP
  • 网络流24题5
  • 如何准备校招技术面试
  • 点击页面其它地方隐藏该div的两种思路
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • Cookie 在前端中的实践
  • flask接收请求并推入栈
  • quasar-framework cnodejs社区
  • vue-router的history模式发布配置
  • 如何优雅地使用 Sublime Text
  • 入门级的git使用指北
  • 深度解析利用ES6进行Promise封装总结
  • 使用权重正则化较少模型过拟合
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 新版博客前端前瞻
  • 积累各种好的链接
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • # 数据结构
  • (1)bark-ml
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (二十四)Flask之flask-session组件
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (理论篇)httpmoudle和httphandler一览
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • **PHP二维数组遍历时同时赋值
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET Core 中插件式开发实现
  • .NET Framework 4.6.2改进了WPF和安全性
  • .net 发送邮件
  • .net反编译的九款神器
  • /proc/stat文件详解(翻译)
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • []sim300 GPRS数据收发程序
  • [BUG] Authentication Error
  • [C++] sqlite3_get_table 的使用
  • [Codeforces1137D]Cooperative Game
  • [Docker]十一.Docker Swarm集群raft算法,Docker Swarm Web管理工具
  • [InnoDB系列] -- SHOW INNODB STATUS 探秘
  • [java] 23种设计模式之责任链模式
  • [LeetCode]-225. 用队列实现栈-232. 用栈实现队列