python装饰器的使用方法

寵の児 提交于 2020-03-12 13:17:55

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)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!