自动化快速上手--Python(12)--装饰器

        这里是清安,欢迎查阅本章,本章较为重要,后面的过程中,你会随处可见哦,特别是pytest中。以及unittest还有你可以自己写!!!

        何为装饰器?

        装饰器就是给某一个函数或某一个程序,再不改变它原程序的基础上添加其他的功能,比如家里有一口井,你想喝水,就需要一个工具来打水,这个工具可以称之为装饰。或者你可以更直白的理解为,你想把自己打扮的更花枝招展的,就需要很多的东西来装饰。

        装饰器定义:

def log(func):
    def wrapper(*args,**kwargs):
        print("f{func.__name__}")
        return func(*args,**kwargs)
    return wrapper

        我们先看一个普通函数:

def log(func):
    # warning是警告,可以忽略
    # {func.__name__}获取函数名
    logging.warning(f'{(func.__name__)}函数正在执行')
    # func()

def fun1():
    print('这里是清安')

log(fun1)
# 这里的结果是:
# WARNING:root:fun1函数正在执行

    清安这里是搭配logging来写的,下一章就会讲到logging。装饰器里面你可以写任何你想要的功能,实现加减乘除,循环列表等功能,小北这里走自动化测试的,所以就把logging放在这里举例了。问:为什么没有打印这里是清安?

答:因为我没有调用对应的函数。上面注释了。
写入装饰器

def log(func):
    def wrapper():
        logging.warning(f'{func.__name__}函数运行中')
        return func

    return wrapper()

def fun1():
    print('清安')

@log
def fun2():
    print('这里是清安')
# 其结果是:
# WARNING:root:fun2函数运行中

        清安在fun2函数方法出引用了装饰器,fun1没有引用,这样就不需要再写调用函数也能跑起来并且看到控制台信息了。这里是添加了一个提示信息。

        当你想要把装饰器引用到fun1()时。

fun_1 = log(fun1)

# WARNING:root:fun2函数运行中
# WARNING:root:fun1函数运行中

装饰器传参:

import logging

def log(func):
    def wrapper(*args, **kwargs):
        logging.warning(f'{func.__name__}函数运行中')
        # print('args',args)
        # print('kwargs',kwargs)
        return func(*args, **kwargs)

    return wrapper

@log
def qing():
    print('清安')

@log
def qingan(age, name):
    print(f"我叫{name},今年{age}岁")

@log
def anan(age):
    print(f"今年{age}岁")

qing()
anan(age=21)  # 指定传值用到**kwargs
qingan(21, '清安')  # 位置传值用到*args
清安
今年21岁
我叫清安,今年21岁
WARNING:root:qing函数运行中
WARNING:root:anan函数运行中
WARNING:root:qingan函数运行中

    装饰器传参与函数传值类似,也有位置传参与指定值传参。注释处可以看到传参具体信息,让你清除的看到对应从传值信息,这里小北可以告诉你,这里的传值是字典传值,与元组传值。
 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

清安无别事

慢慢的积累一杯奶茶吧

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

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

打赏作者

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

抵扣说明:

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

余额充值