def foo():
print‘foo‘
foo//表示是函数 打印内存地址
foo()//表示执行foo函数
===========================
def foo():
print‘foo‘
foo=lambda x:x+1
foo()//执行下面的lambda表达式,而不是原来的f
===============================
def login(func): //func=tv
def inner(*args,**kwargs): //zy传给arg
print("passed user verification......")
return func(*args,**kwargs) //tv
return inner
//@login
def home(name):
print("welcome [%s]to home page"%name)
def tv(name,passwd=123):
print("welcome [%s]to tv page"%name)
return 4
@login
def moive(name):
print("welcome [%s]to moive page"%name)
//tv=login(tv)------传tv的内存地址
t=tv("zy",passwd="123")
print t
movie(“zy”)
=============================================
def Login(request,kargs):
print(‘before‘)
def Error(request,kargs):
print(‘after‘)
def filter(before_func,after_func):
def outer(main_func):
def wrapper(request,kargs):
before_result=before_func(request.kargs)
if(before_result!=None):
return before_result:
main_result=main_func(request.kargs)
if(main_result!=None):
return main_result:
after_result=after_func(request.kargs)
if(after_result!=None):
return after_result:
return wrapper
return outer
@Filter(Login,Error)
def Index(request,kargs):
print("index")
return ‘‘home page"
Index(‘zy‘,‘zlj‘)
=======================
@w1
def show():
pass
1.执行w1,把自己装饰的函数的函数名当做参数,w1(show)
2.show函数重新定义,新show=w1(show)返回值
================================
def w1(main_func):
def outer(request.kargs):
print("before")
main_func(request,kargs)
print("after")
return outer
@w1
def show():
print(‘show‘)
原文:http://www.cnblogs.com/my334420/p/6387688.html