python 闭包和装饰器

闭包
def test(a,b):
def test_in(x):
print(a*x+b)

return test_in

line1=test(1,1) //===line1(x):print(x+1)
line2=test(4,6) //===line2(x):print(4*x+6)
line1(4)
line2(7)

------------------------------
装饰器:
def desc(func):
print('this is in desc')
def inner():
return "<b>"+func()+"</b>"
return inner

def desc1(func):
def inner1():
return '<i>'+func()+'</i>'
return inner1

@desc //===f=desc(f)在此执行命令 ,会打印this is in desc
def f():
return 'hello world'

r=f()
print(r) //<b><i>hello world</i></b>

通用装饰器:
def desc(func):
def inner(*args,**kwargs):
res=func(*args,**kwargs)
return res
return inner


---------------------------
带参数的装饰器:

def desc_args(pre):
def desc(func):
def inner(*args,**kwargs):
res=func(*args,**kwargs)
print(pre)
return res
return inner
return desc

@desc_args('hello')
def f():
print('this is in f')

f()
posted @ 2017-07-13 22:14  wangxingg  阅读(84)  评论(0)    收藏  举报