首页 > 编程语言 >Python之通用装饰器的使用

Python之通用装饰器的使用

时间:2023-02-23 18:31:34浏览次数:42  
标签:通用 Python -- inner kwargs print return 装饰 result

1. 装饰带有参数的函数

# 添加输出日志的功能
def logging(fn):
def inner(num1, num2):
print("--正在努力计算--")
fn(num1, num2)
return inner

# 使用装饰器装饰函数
@logging
def sum_num(a, b):
result = a + b
print(result)
sum_num(1, 2)

运行结果:

--正在努力计算--
3

2. 装饰带有返回值的函数

# 添加输出日志的功能
def logging(fn):
def inner(num1, num2):
print("--正在努力计算--")
result = fn(num1, num2)
return result
return inner
# 使用装饰器装饰函数
@logging
def sum_num(a, b):
result = a + b
return result
result = sum_num(1, 2)
print(result)

运行结果:

--正在努力计算--
3

3. 装饰带有不定长参数的函数

# 添加输出日志的功能
def logging(fn):
def inner(*args, **kwargs):
print("--正在努力计算--")
fn(*args, **kwargs)
return inner

# 使用语法糖装饰函数
@logging
def sum_num(*args, **kwargs):
result = 0
for value in args:
result += value

for value in kwargs.values():
result += value
print(result)

sum_num(1, 2, a=10)

运行结果:

--正在努力计算--
13

4. 通用装饰器

# 添加输出日志的功能
def logging(fn):
def inner(*args, **kwargs):
print("--正在努力计算--")
result = fn(*args, **kwargs)
return result
return inner

# 使用语法糖装饰函数
@logging
def sum_num(*args, **kwargs):
result = 0
for value in args:
result += value

for value in kwargs.values():
result += value

return result
@logging
def subtraction(a, b):
result = a - b
print(result)

result = sum_num(1, 2, a=10)
print(result)

subtraction(4, 2)

运行结果:

--正在努力计算--
13
--正在努力计算--
2

5. 小结

  • 通用装饰器的语法格式:

# 通用装饰器
def logging(fn):
def inner(*args, **kwargs):
print("--正在努力计算--")
result = fn(*args, **kwargs)
return result

return inner

标签:通用,Python,--,inner,kwargs,print,return,装饰,result
From: https://blog.51cto.com/u_13236892/6081650

相关文章

  • python 操作 ES 一、基础操作
    示例代码环境python:3.8es:7.8.0环境安装pipinstallelasticsearch==7.8.0fromelasticsearchimportElasticsearch#1、创建ES对象,创建连接es=Elasticsearch(......
  • python 操作 ES 二、mappings
    环境python:3.8es:7.8.0环境安装pipinstallelasticsearch==7.8.0  fromelasticsearchimportElasticsearch#环境python:3.8es:7.8.0#环境安装#pipinstal......
  • python next() iter()使用
    说明:next()、iter()这两个函数一般配套使用。下面先介绍用法,后说明用途。用法:iter(object):生成可迭代对象的迭代器;object必须是可迭代对象,比如list、tuple、dict等;next(i......
  • Python字典 values() 方法
    ​​dict.keys()​​​、dict.values()和 ​​dict.items()​​ 返回的都是视图对象(viewobjects),提供了字典实体的动态视图,这就意味着字典改变,视图也会跟着变化。视图对......
  • adaboost方法步骤和python实现捏
    标准AdaBoost算法只适用于二分类任务AdaBoost(AdaptiveBoosting)是一种常用的集成学习算法,用于提高分类器的准确性。其基本思想是根据训练数据的分类情况调整分类器权重,从......
  • python爬虫篇1:爬妹子图片
    爬虫学习伊始,参考网上素材,自己写出来的,比较简单:主要运用了request爬取,正则表达式解析importrequestsimportreimportosfromurllibimporterrordefmain():dirPath=......
  • Python的八个实用脚本,需要的赶紧码住
    脚本写的好,下班下得早!程序员的日常工作除了编写程序代码,还不可避免地需要处理相关的测试和验证工作。例如,访问某个网站一直不通,需要确定此地址是否可访问,服务器返回什么,进......
  • python学习笔记
    1.变量名称区分大小写(age、Age和AGE是三个不同的变量)2.在函数内部创建一个与全局变量同名的变量:x="awesome"defmyfunc():x="fantastic"print("Pythonis"......
  • Python字符串方法
    31个必备的Python字符串方法▍1、Slicingslicing切片,按照一定条件从列表或者元组中取出部分元素(比如特定范围、索引、分割值)s='hello's=s[:]print(s)#......
  • python入门之函数返回值的应用
    """函数返回值应用"""#函数设计思想:#分而治之#干一件事#需求:定义两个数字相加的函数#defadd():#1.获取数据#number01=int(i......