Python學習筆記-裝飾器


'''
裝飾器
概念:是一個閉包,把一個函數當做參數返回一個替代版的函數,本質上就是一個返回函數的函數
'''
#簡單的裝飾器
def func1():
    print("welcome to beijing")

def outer(func):
    def inner():
        print("******************")
        func()
    return inner

#f是函數func1的加強版本
f = outer(func1)
f()


"""
#複雜一點的

def outer(func):
    def inner(age):
        if age<0:
            age = 0
        func(age)
    return inner
#使用@符號將裝飾器應用到函數
#@python2.4支持使用@符號
@outer
def say(age):
    print("tom is %d years old"%(age))
say(-10)                          #tom is 0years old
"""

#通用裝飾器
def outer(func):
    def inner(*args,**kwargs):
        #添加修改的功能
        print("&&&&&&&&&&&&&&&&&&")
        func(*args,**kwargs)
    return inner
@outer
def say(name,age):
    print("my name is %s,I am %d years old"%(name,age))

say("Tom",99)  #my name is Tom,I am 99 years old

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章