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

函数装饰器

'''函数装饰器:1.装饰器传递参数2.无参装饰器         此处的参数指的是装饰器有无参数而不是原函数有无参数3.有参装饰器     需要在装饰器前再套一层函数作为参数的传递
'''#装饰器传递参数    通用写法: *args,**kwargs
def log(func):def wrapper(*args, **kwargs):       #无参print("log...before")func(*args, **kwargs)print("log...after")return wrapper@log                #装饰器传递原函数参数
def add_user(username):print(f"添加用户: {username}")add_user("李四")print("--------------------------------------------------无参装饰器")#2. 无参装饰器       无参:装饰器函数没有参数
def no_args_log(func):def wrapper(*args, **kwargs):print("log...before")func(*args, **kwargs)print("log...after")return wrapper@no_args_log             #无参的装饰器
def add_user(username, password):print(f"username:{username}, password:{password}")add_user(username='王兆玮', password="111")print("-----------------------------------------有参装饰器")#3.有参装饰器   ---   案例:在添加日志时,增加操作员和操作时间
def args_log(operator,time):            #传递参数用的函数def decorator(func):          #装饰器函数def wrapper(*args, **kwargs):print(f"log...before : {operator}/{time}")func(*args, **kwargs)print(f"log...after : {operator}/{time}")return wrapperreturn decoratorimport time
#定义操作员
operator = "王兆玮"
time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())@args_log(operator,time)        #有参装饰器
def add_user(username, password):print(f"新增用户: username:{username} , password:{password}")add_user("尹书婷","123456")print("-----------------------课堂练习")
#课堂练习:请实现用一个装饰器,把函数的返回值 + 100 然后返回
def add(func):def wrapper(*args, **kwargs):res = func(*args, **kwargs)return res + 100return wrapper@add
def return_int(number):return int(number)print(return_int("1"))
http://www.dtcms.com/a/515717.html

相关文章:

  • 正则表达式入门到精通教程(Linux实操版)
  • 逆向开发在逆向加密狗中的作用
  • 网站模板 古典大学生app开发创业计划书
  • Linux 信号控制
  • Android Studio模拟器无法联网(能打开IP网页,但不能打开域名,DNS解析错误)问题2025年10月22日
  • php如何做局域网的网站网站设计与网页制作代码大全
  • 在没有网络的环境下安装包pymysql
  • Gradle 构建脚本迁移:从 Groovy DSL 到 Kotlin DSL,语法与技巧对比
  • 个人网站审批怎么制作ppt模板 教程
  • 内网构建https
  • [运维]宝塔 Apache环境使用CDN获取访客真实IP方法
  • 【学习系列】SAP RAP 17:RAP应用部署集成至Fiori Launchpad 【S4HC Public Edition】
  • 正点原子RK3568学习日志15-杂项设备驱动
  • 绍兴建设开发有限公司网站网站网站娱乐建设
  • 迭代器失效问题
  • Ubuntu 16.04交叉编译arm-linux-gnueabihf的QT5.6.2
  • 神经网络详解
  • 网站如何防止黑客攻击宁波新闻
  • 为打印预览对话框 PrintPreviewDialog 添加保存到 PDF 文件按钮源代码详解
  • Nevercenter CameraBag Photo for mac照片滤镜美化软件
  • 设计模式-策略模式:从鞋厂促销活动看算法的灵活切换
  • Java实现Excel转PDF
  • Fenwick 树进行快速统计
  • Cocos creator2.4.4 处理 16KB 问题
  • 旅游网站的设计的前提成都那家网站做的好
  • undefined reference to `cv::String::dea llocate()‘
  • 计划任务原理及实战
  • 做网站设计最好的公司做旅游网站的论文
  • 【Android】Handler/Looper机制相关的类图和流程图
  • ARM《1》_回顾gcc、动态编译和静态编译、MakeFile的使用