带有参数的装饰器

2022-09-18

带有参数的装饰器的实质:

  因为装饰器是不能在带有参数,所以要定义带有参数的装饰器应该换一种思路。在装饰器的外面套一个函数,使用该函数返回这个装饰器。

带有参数的装饰器的实例:

 1 # 装饰器
 2 def return_decorator(flag):
 3     def decorator(func):
 4         def inner(a,b):
 5             if flag == "+":
 6                 print("正在努力执行加法运算")
 7             elif flag == "-":
 8                 print("正在努力执行减法运算")
 9             func(a,b)
10         return inner
11     return decorator
12 
13 @return_decorator("+")
14 # 原来的函数
15 def add_num(a,b):
16     result = a + b
17     print(result)
18 
19 @return_decorator("-")
20 def sub_num(a,b):
21     result = a - b
22     print(result)
23 
24 add_num(1,2)
25 sub_num(1,4)

  说明:

    第2行,定义了一个外部函数,内部放置装饰器。这个外部函数是有参数的。第5-8行,在inner函数内部,进行判断,如果传入的参数“flag”为“+”,输出xx;为“-”,输出xx。

    第9行,是func(a,b)参数,如果此处写为了add_num(a,b)或者sub_num(a,b),会出现“栈内存溢出”的错误。

    第11行,返回装饰器。

    第13行,给带参数的装饰器传一个flag参数“+”。第19行,传“-”参数。

    第24-25行,调用原来的函数。

运行结果图:

带有参数的装饰器

 

 

    

    

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:带有参数的装饰器 - Python技术站

(0)
上一篇 2023年4月2日 下午4:57
下一篇 2023年4月2日 下午4:58

相关文章

  • 学习笔记——Django项目中请求与响应(json数据)

    2022-10-04 测试json数据与Django项目与pycharm连接,在“postman”软件中。“postman”是一个接口测试软件。下载方式问度娘。 (1)在“postman”中设置“json”连接请求      设置的顺序:设置与pycharm中Django项目建立连接的“URL”路由,之后在左边选择“POST”,后点击“Body”,点击“ra…

    2023年4月2日
    00
  • 学习笔记——Django项目中的过滤器,模板继承

    2022-10-08 过滤器 过滤器的含义:   过滤器即筛选出我们设定需要的,过滤掉我们不需要的数据。 过滤器使用的场景:   例如:在子应用的“views.py”中的一个类中的函数设置了一个请求在浏览器页面显示“组织内容”,例如:在“组织内容”中设置了一个“birthday:datatime.now()”。在“templates”文件夹中的“index.…

    Python开发 2023年4月2日
    00
  • 装饰器的使用

    2022-09-17 装饰器的使用实例——获得计时函数所用时间: 1 import time 2 # 定义装饰器函数 3 def decorator(fun): 4 def inner(): 5 # 获得开始时间 6 start = time.time() 7 # 执行计时函数 8 fun() 9 # 执行计时函数之后所用的时间 10 end = time.…

    Python开发 2023年4月2日
    00
  • Django项目中的数据库引擎的修改注意点以及级联删除的设置

    2022-09-29 问题描述: 在“setting.py”的配置文件中修改数据库引擎中,将系统默认的”sqlite3″后缀改为了“sql”。出现问题。 原因分析:    问题查看:  修改后:    —————————————— 上述问题修改后,在“setting”中设置数据库的其他内容(主机、端口、…

    2023年4月2日
    00
  • Django项目中表的查询的操作

    2022-09-29 shell操作:   我在使用中是pycharm与数据库建立连接的一个工具。 使用的环境:   在此处是用在了虚拟环境中。 使用场景:   一般是在创建的表中插入数据后,进行查看,可以代替在“视图”中——“创建一个函数用于请求指定表中的内容,在浏览器中返回”。 在插入表的过程中,有两个新得知的内容:   第一个是,插入语句中,“inse…

    Python开发 2023年4月2日
    00
  • 学习笔记——Django项目中新增数据、修改数据

    2022-09-30 新增数据 方式一: 进入虚拟环境,进入shell工具环境中(“python manage.py shell”),插入数据。在插入数据之前,可以先将要插入的内容写在“views.py”中,,这样做的目的是先写在此处会有代码提示,较为方便。之后将内容放到shell工具中。 首先,先要导入某个表,使用的是ORM模式,因此导入的是一个子应用中的…

    Python开发 2023年4月2日
    00
  • 在浏览器中Django项目的静态文件打不开的一个原因

    2022-09-27 问题描述:   编写Django代码时,设置了一个“static”文件夹,在里面放置了一张图片。在“setting”中设置了静态文件在服务器中的存储路径,But 浏览器运行时,显示    找不到,就很奇怪。 问题原因:   之后,在看了一眼代码,发现了一个问题,它是源于一个拼写的错误,如下   发现这个存储位置的拼写少了一个”s”。 其…

    2023年4月2日
    00
  • 学习笔记——Django项目中关联查询以及关联查询的筛选

    2022-10-01 关联查询:   在Django项目中使用ORM模式设置表后,进行关联查询,即两个表直接有联系的查询。 方式:   可以通过主表查询从表,也可以通过从表查询主表。 —————- 方式一实例: (1)查询编号为1的图书中的人物 前提环境,进入pycharm,进入虚拟环境、进入shell环境。 首先,需要导入模块,先查询书…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部