10、装饰器

1、装饰器

'''

装饰器:

概念:是一个闭包,把一个函数当做参数,返回一个替代版 函数,本质上就是一个返回函数的函数

'''


#简单的装饰器

def func1():
print("sunck is good man")

#一般不这样写
'''

def outer():
print("*******")
func1()

outer()

'''

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

#func1 = outer(func1)

#f是函数func1的加强版本
#outer(func1)
f = outer(func1)
f()


-------------------------------------
2、复杂装饰器案例

def outer(func):
def inner(age):
if age < 0:
age = 0
func(age)

return inner

#使用@符号将装饰器应用到函数,Python2.4支持使用@符号
@outer #相当于say = outer(say)

def say(age):
print("sunck is %d years old" % (age))

say(-18)

#say = outer(say) #如果装饰器是独立的,可以不用写这句,直接用@符号

say(-18)
-------------------------
3、通用装饰器
def outer(func):
def inner(*args, **kwargs):

#添加修饰的功能
print("&&&&&&&&&&&&")
func(*args, **kwargs)
return inner

@outer

def say(name, age): #函数的参数理论上是无限制的,但是实际上最好不要超过6、7个
print("my name is %s, I am %d years old" % (name, age))

say("sunck", 12)










posted @ 2020-02-18 15:53  步行-天下  阅读(7)  评论(0)    收藏  举报