ホームページ  >  記事  >  バックエンド開発  >  Python のデコレータについて学ぶ

Python のデコレータについて学ぶ

黄舟
黄舟オリジナル
2017-07-27 16:07:301401ブラウズ

定義: それは本質的に関数です、(デコレーター他の関数) は他の関数に関数を追加することです

原則: 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。