Python:decorator装饰器的使用示例

简介: Python:decorator装饰器的使用示例

定义一个装饰器

def decorator(func):
    def wrapper(*arg, **kwargs):
        print("before")
        ret = func(*arg, **kwargs)
        print("after")
        return ret
    return wrapper

使用示例


# -*- coding: utf-8 -*-
# 作用于普通方法
@decorator
def foo(name):
    print('my name is:', name)
class Foo(object):
    # 作用于实例方法
    @decorator
    def foo(self, name):
        print('my name is:', name)
    # 作用于类方法
    @classmethod
    @decorator
    def class_foo(cls, name):
        print('my name is:', name)
    # 作用于静态方法
    @staticmethod
    @decorator
    def static_foo(name):
        print('my name is:', name)
if __name__ == '__main__':
    foo('Tom')
    Foo().foo('Tom')
    Foo.class_foo('Tom')
    Foo.static_foo('Tom')
"""
4中方式都可以正常执行,输入如下
before
my name is: Tom
after
"""

如果把装饰器函数参数修改了

def decorator(func):
    def wrapper(name):
        print("before")
        # ret = func(*arg, **kwargs)
        # 取消原来的不定参数,写为固定参数
        ret = func(name)
        print("after")
        return ret
    return wrapper

执行结果

# 普通函数可以正常执行
foo('Tom')
# 静态方法可以正常执行
Foo.static_foo('Tom')
# 实例方法报错
Foo().foo('Tom')
# TypeError: wrapper() takes 1 positional argument but 2 were given
# 类方法报错
Foo.class_foo('Tom')
# TypeError: wrapper() takes 1 positional argument but 2 were given

综上,一般情况下需要写成不定参数的形式,兼容性更强

相关文章
|
28天前
|
程序员 测试技术 开发者
Python装饰器:简化代码的强大工具
Python装饰器:简化代码的强大工具
151 92
|
2月前
|
JSON API 数据格式
洋码头商品 API 示例指南(Python 实现)
洋码头是国内知名跨境电商平台,提供商品搜索、详情、分类等API接口。本文详解了使用Python调用这些API的流程与代码示例,涵盖签名生成、请求处理及常见问题解决方案,适用于构建选品工具、价格监控等跨境电商应用。
|
2月前
|
缓存 JSON API
VIN车辆识别码查询车五项 API 实践指南:让每一俩车有迹可循(Python代码示例)
VIN(车辆识别代码)是全球唯一的17位汽车标识码,可快速获取车架号、发动机号、品牌型号等核心信息。在二手车交易、保险理赔、维修保养等场景中,准确解析VIN有助于提升效率与风控能力。本文介绍VIN码结构、适用场景,并提供Python调用示例及优化建议,助力企业实现车辆信息自动化核验。
482 1
|
2月前
|
JSON API UED
运营商二要素验证 API:核验身份的一致性技术实践(Python示例)
随着线上业务快速发展,远程身份核验需求激增。运营商二要素验证API通过对接三大运营商实名数据,实现姓名、手机号、身份证号的一致性校验,具备权威性高、实时性强的优势,广泛应用于金融、电商、政务等领域。该接口支持高并发、低延迟调用,结合Python示例可快速集成,有效提升身份认证的安全性与效率。
270 0
|
2月前
|
JSON API 数据格式
Python采集京东商品评论API接口示例,json数据返回
下面是一个使用Python采集京东商品评论的完整示例,包括API请求、JSON数据解析
|
3月前
|
JSON 缓存 API
身份证二要素核验接口调用指南 —— Python 示例
本文介绍如何在 Python 中快速实现身份证二要素核验功能,适用于用户注册、金融风控等场景。通过阿里云市场提供的接口,可校验「姓名 + 身份证号」的一致性,并获取性别、生日、籍贯等信息。示例代码展示了从环境变量读取 APP_CODE、发送 GET 请求到解析 JSON 响应的完整流程。关键字段包括 code(1-一致,2-不一致,3-无记录)、msg 和 data。常见问题如 403 错误需检查 AppCode,超时则优化网络或设置重试机制。集成后可根据业务需求添加缓存、限流等功能提升性能。
357 4
|
3月前
|
Python
掌握Python装饰器:轻松统计函数执行时间
掌握Python装饰器:轻松统计函数执行时间
253 76
|
2月前
|
测试技术 API 开发者
淘宝关键词搜索商品列表API接入指南(含Python示例)
淘宝关键词搜索商品列表API是淘宝开放平台的核心接口,支持通过关键词检索商品,适用于比价、选品、市场分析等场景。接口提供丰富的筛选与排序功能,返回结构化数据,含商品ID、标题、价格、销量等信息。开发者可使用Python调用,需注意频率限制与错误处理,建议先在沙箱环境测试。
|
4月前
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
487 77

热门文章

最新文章

推荐镜像

更多