Heim  >  Artikel  >  Backend-Entwicklung  >  Erfahren Sie mehr über Dekorateure in Python

Erfahren Sie mehr über Dekorateure in Python

黄舟
黄舟Original
2017-07-27 16:07:301400Durchsuche

Definition: Es handelt sich im Wesentlichen um eine Funktion (Dekorator anderer Funktionen), die dazu dient, anderen Funktionen zusätzliche Funktionen hinzuzufügen

Prinzip: 1. Der Quellcode der dekorierten Funktion kann nicht geändert werden

2. Die Aufrufmethode der dekorierten Funktion kann nicht geändert werden

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()

Hinweis: Der Dekorator muss über der dekorierten Funktion geschrieben werden.

Kleines Experiment: Passwortverifizierung

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()

Das obige ist der detaillierte Inhalt vonErfahren Sie mehr über Dekorateure in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn