1. 程式人生 > >Python函數(十)-裝飾器(三)

Python函數(十)-裝飾器(三)

進行 src def int 技術 put 功能 bubuko div

如果多個函數想通過一個裝飾器來實現不同的功能的話,可以給裝飾器傳入參數,讓裝飾器裏的函數對參數進行判斷,來實現不同的功能

# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR"

def deco(info_type):
    def outer(func): #這在傳入參數名
        def inner(*args,**kwargs):
            if info_type == ‘name‘: #對裝飾器的參數進行判斷
                func(*args, **kwargs)
                name_info = input("your name:")
                print("your name is %s"%name_info)
            if info_type == ‘age‘:
                func(*args, **kwargs)
                age_info = input("your age:")
                print("your age is %s"%age_info)
        return inner
    return outer

@deco(info_type=‘name‘) #給裝飾器傳參數
def name():
    print("input your name")

@deco(info_type=‘age‘)
def age():
    print("input your age")

if __name__ == ‘__main__‘:
    name()
    age()

運行結果

技術分享圖片

Python函數(十)-裝飾器(三)