#!/usr/bin/env python #coding:utf-8 """ 裝飾器實例拆解 """ def login00(func): print('00請經過驗證用戶!') return func def tv00(name): print('00你的用戶是:%s' %name) # 裝飾器的精簡工做原理解釋: tv = login00(tv00) # 返回tv函數的對象,賦值給tv tv('yh00') # 調用執行tv函數 # 魔方版裝飾器 def login01(func): print('01請經過驗證用戶!') return func @login01 def tv01(name): print('01你的用戶是:%s' %name) tv01('yh01') # 存在一個問題,調用執行tv函數前,會執行login函數的print語句 # 改進版裝飾器 def login02(func): def inner(arg): print('02請經過驗證用戶!') func(arg) return inner def tv02(name): print('02你的用戶是:%s' %name) tv02 = login02(tv02) # 返回inner函數的對象,賦值給tv02;並把 tv02函數的對象 傳遞給 login02函數的形參 func tv02('yh02') # 調用執行tv02函數,把實參:yh02 傳給 形參arg;執行tv02('yh02') # 改進 魔方版 版裝飾器 def login03(func): def inner(arg): print('03請經過驗證用戶!') func(arg) return inner @login03 def tv03(name): print('03你的用戶是:%s' %name) tv03('yh03')