python装饰器的使用方法

python装饰器的使用方法

1.函数作为参数出现,2,作为闭包出现

例:

# 无参数装饰器
def house(func):
    def wapper():
        func()
        print("进行装修")
    return wapper
@house
def new_house():
    print("这是一个毛坯房")
new_house()

含有参数的函数,需要在装饰器加上对应的函数

def house(func):
    def wapper(name):  #传入对应的参数值
        func(name)   #传入对应的参数值
        print("进行装修")
    return wapper
@house
def new_house(name):
    print("户主是{},这是一个毛坯房".format(name))
new_house("小明")

含有多个参数的函数,需要在装饰器加上对应的函数

def house(func):
    def wapper(*args,**kwargs):
        func(*args,**kwargs)
        print("进行装修")
    return wapper
@house
def new_house(*args,**kwargs):  #使用*args,**kwargs
    print("户主是{},这是一个毛坯房".format(args))

new_house("小明")

结合使用装饰器的例:

import time
iszt = False
def login():
    yhm = {"name":"fjc","pwd":"123456"}
    name = input("请输入用户名")
    pwd =input("请输入密码")
    if name == yhm.get("name") and pwd == yhm.get("pwd"):
        return True
    else:
        return False

def zt(func):
    def wapper(*args,**kwargs):
        global iszt
        if iszt == True:
            print("登陆成功{}".format(iszt))
            func(*args,*kwargs)
        else:
            print("没有登录")
            print("现在的状态为{}".format(iszt))
            iszt =login()
    return wapper

@zt
def pay(money):
    print("*********************付款{}".format(money))
    time.sleep(2)
    print("付款成功")
pay(100)
pay(200)
time.sleep(20)
iszt =False
pay(200)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值