首頁  >  文章  >  後端開發  >  python中關於裝飾器的學習

python中關於裝飾器的學習

黄舟
黄舟原創
2017-07-27 16:07:301407瀏覽

定義:本質上就是個函數,(裝飾器其他函數)就是為了給其他函數添加附加功能

#原則:1.不能修改被裝飾的函數的原始碼

# 2.不能修改被裝飾的函數的呼叫方式

import time
def timer(hello):
    def func(*args,**kwargs):    #函数传参,不限个数。
        start = time.time()
        hello(*args,**kwargs)    #函数传参,不限个数。
        end = time.time()
        print("运行时间:%s"%(end - start))
    return func
@timer
def hello():
    time.sleep(2)
    print("nihao")
hello()

註:裝飾器得寫在被裝飾函數的上面。

 小實驗:密碼驗證

import time
user = {                           #存储用户名和密码
    "luozeng":'123',
    "xuemanfei":'456',
    "xutian":'789'
}

def yanzheng(hello):
    def func(*args,**kwargs):
        start = time.time()
        username = input("请输入用户:").strip()     #用户输入
        password = input("请输入密码:").strip()
        if username in user and password == user[username]:        #用户名和密码验证
            print("登陆成功")
            hello(*args,**kwargs)
        else:
            exit("用户名或密码错误!")
        end = time.time()
        print("运行时间:%s"%(end - start))
    return func
@yanzheng
def hello():
    print("你好!")
hello()

 

以上是python中關於裝飾器的學習的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn