python 裝飾器

裝飾器

在運行原來功能的基礎(chǔ)上,添加一些新的功能,如權(quán)限的驗證,日志等

不修改原來的代碼,進行功能的擴展

python裝飾器,是修改了代碼,python直接運行代碼,不編譯

python裝飾器 用 @函數(shù)名 來表示 被稱為語法糖

下面的代碼中 @ checklogin 就是一個裝飾器
有相對應(yīng)的函數(shù) checklogin()

    def checklogin(func):
        def inner():
            name= input('name: ')
            pwd = input('wd: ')
            if name=='qw' and pwd =='123':
                func()
            else :
                print('重新登錄')
        return inner

                 # 程序加載到這就先把save當(dāng)成參數(shù)傳進checklogin
    @checklogin #相當(dāng)于 save=checklogin(save) 
     # 執(zhí)行一次checklogin外部函數(shù) 得到返回inner在加載save() 
    def save():
        print('save......')

    def delete():
        print('delete/./////')

    def update():
        print('update......')
    def select():
        print('select........')

    save()# 調(diào)用save()相當(dāng)于調(diào)用checklogin方法里的內(nèi)部inner()方法,
          #  先運行inner()方法,在運行自身所代表的方法

    update()

多個裝飾器

即一個函數(shù)上面有兩個或以上的裝飾器,運行順序如下:

多個裝飾器運行順序.JPG
如果第一個裝飾器判斷不成立,第二個裝飾器就不再執(zhí)行,
帶參數(shù)的裝飾器
    def ha(num):
        def check(func):
            def inner1():
                if num>2:
                    age = input('age : ')           
                    if age=='20':
                         return func()
                    else:
                        print('age error ...')
                else:
                    print('?????')

            return inner1
        return check
    # 裝飾器帶參數(shù),需要再寫一層函數(shù)用來傳參,里面的函數(shù)可以根據(jù)參數(shù)做出邏輯判斷
    # 在原有的基礎(chǔ)上設(shè)置外部變量,即寫一層函數(shù),并返回原來基礎(chǔ)上的外部函數(shù)名
    @ha(4) 
    def add():
        print('+++++++')
    add()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 假以時日,我相信裝飾器一定會成為Python這門編程語言一個更加強大的功能。到目前為止,我覺得到我所看到的有關(guān)介紹...
    TypingQuietly閱讀 5,554評論 2 70
  • 呵呵!作為一名教python的老師,我發(fā)現(xiàn)學(xué)生們基本上一開始很難搞定python的裝飾器,也許因為裝飾器確實很難懂...
    TypingQuietly閱讀 20,314評論 26 186
  • 原文出處: dzone 譯文出處:Wu Cheng(@nullRef) 1. 函數(shù) 在python中,函數(shù)通過...
    DraculaWong閱讀 588評論 0 3
  • 裝飾器簡介 在Python中,裝飾器屬于“元編程”的類別,“元編程”的主要目的就是創(chuàng)建函數(shù)或者類,并且用它們來操縱...
    小白將閱讀 534評論 0 5
  • 大學(xué)生么,趁著沒畢業(yè),快出去一次吧。 我從高三畢業(yè)就嚷嚷著出門體驗打工樂趣了。真是幼稚,打工何來樂趣呢?樂的是經(jīng)驗...
    青門外閱讀 5,326評論 73 262

友情鏈接更多精彩內(nèi)容