python裝飾器

1 無參裝飾器,包裝無參函數函數

#無參裝飾器包裝無參函數
def decorator(func):
    print('我是裝飾器')
    return func

def decorator1(func):
    print('我是裝飾器1')
    return func


@decorator
@decorator1
def function():
    print('我是函數')
function()
'''
執行順序爲:
decorator1() -> decorator() -> function()
''' #裝飾器就至關於下面的調用 #decorator(function())

2 無參裝飾器,包裝有參函數spa

#無參裝飾器包裝有參函數
def decorator(func):
    def x(*args,**kwargs):#處理傳入函數的參數
        print('裝飾器開始')
        func(*args,**kwargs)#調用函數
        print('裝飾器裏面函數參數:',args,kwargs)
        print('裝飾器結束')
    return x
@decorator
def function(age,name,sex,tel=110):
    print('我是函數參數:',age,name,sex,tel)

function(18,'小王','')

3 帶參裝飾器,包裝無參數函數code

#帶參裝飾器包裝無參數函數
'''
在裝飾器的內部在定義一個裝飾器,來修飾函數
'''
def decorator(decorator_arg):
    print('我是裝飾器參數:',decorator_arg)     #裝飾器參數
    def newdecorator(func):      #最終返回的函數,來調用被修飾的函數
        return func         #返回被修飾的函數
    return newdecorator

@decorator('這是裝飾器參數')
def function():
    print('我是函數')

function()

4 帶參數裝飾器,包裝帶參數函數blog

#帶參數裝飾器,包裝帶參數函數
'''
帶參數的裝飾器,在內部定義一個新的裝飾器重新裝飾函數,
在定義一個方法來接受函數的參數,在這個函數的內部調用函數並把函數的參數傳入
'''
def decorator(decorator_arg):
    def newdecorator(func):#func就至關於function函數
        def x(*args,**kwargs):#處理函數的參數
            print('裝飾器開始')
            func(*args,**kwargs)#調用函數
            print('裝飾器結束')
            print(decorator_arg,func,args,kwargs)
        return x
    return newdecorator

@decorator('我是decorator_arg')
def function(age,name,sex,tel=110):
    print('我是函數參數:',age,name,sex,tel)

function(18,'翠花',sex="")

 

相關文章
相關標籤/搜索