Python笔记之装饰器(复杂版正式版)

本文详细介绍Python装饰器的使用方法,包括基本装饰器的写法、多参数装饰器的应用及如何在不修改原函数的基础上增强其功能,通过实例展示如何处理非法输入。

一、目标

学习Python的装饰器的用法,正式写法

二、试验平台

windows7 , python3.7

三、先看个例子

解析:比如原本有个方法xFunc,让输入年龄,打印年龄,但有个问题,年龄不可能为负数,怎么办?现在就要在不修改原有方法的情况下,去改变原来方法的输出结果(输入负数,结果都是0)

def xFunc(age):
    print(f'你输入的年龄是:{age}')
def zhuangshiqi(xArgs):
    def zsqInner(age):
        if age < 0:
            age = 0
        xFunc(age)
    return zsqInner

kahn = zhuangshiqi(xFunc)
kahn(-5)
kahn(18)
'''
输出结果:
你输入的年龄是:0
你输入的年龄是:18
'''

四、正式版装饰器的写法举例

def zhuangshiqi(xArgs):
    def zsqInner(age):
        if age < 0:
            age = 0
        xArgs(age)
    return zsqInner

@zhuangshiqi
def xFunc(age):
    print(f'你输入的年龄是:{age}')

xFunc(-10)
xFunc(-2)
xFunc(18)

'''
你输入的年龄是:0
你输入的年龄是:0
你输入的年龄是:18
'''

五、多参数正式版装饰器写法举例:

def zhuangshiqi(xCanShu):
    def zsq(*args, **kwargs):
        print("装饰器打印的东西-----(说明被装饰了)")
        xCanShu(*args, **kwargs)
    return zsq

@zhuangshiqi
def say(name, age):
    print(f"我的名字是{name},我今年{age}岁了")

@zhuangshiqi
def sayHello(name):
    print(f"The world i am coming. By {name}")


say("kahn", 18)    # #执行被装饰后的方法say
sayHello("KAHN")   # #执行被装饰后的方法sayHello方法
'''
执行结果:
装饰器打印的东西-----(说明被装饰了)
我的名字是kahn,我今年18岁了
装饰器打印的东西-----(说明被装饰了)
The world i am coming. By KAHN
'''

kahn ok 2019年4月22日14:25:20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潇洒哥Kahn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值