标签:
定义:本质是函数(装饰其他函数),为其他函数添加附件功能的。
遵循原则:①不能修改被装饰函数的源代码
②不能修改被装饰函数的调用方式
组成:装饰器由高阶函数+内嵌函数+闭包组成
1、函数的调用顺序
#!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def func(): #定义函数func() print("in the func") foo() #调用函数foo() func() #执行函数func() def foo(): #定义函数foo() print("in the foo") ###########打印输出########### #报错:函数foo没有定义 #NameError: name ‘foo‘ is not defined #函数正确的调用方式 def func(): #定义函数func() print("in the func") foo() #调用函数foo() def foo(): #定义函数foo() print("in the foo") func() #执行函数func() ###########打印输出########### #in the func #in the foo
总结:被调用函数要在执行之前被定义
2、高阶函数
满足下列条件之一就可成函数为高阶函数
某一函数当做参数传入另一个函数中
函数的返回值包含一个或多个函数
刚才调用顺序中的函数稍作修改就是一个高阶函数
#高阶函数 def func(): #定义函数func() print("in the func") return foo() #调用函数foo() def foo(): #定义函数foo() print("in the foo") return 100 res = func() #执行函数func() print(res) #打印函数返回值 ###########打印输出########### #in the func #in the foo #100
从上面的程序得知函数func的返回值为函数foo的返回值,如果foo不定义返回值的话,func的返回值默认为None
标签:
原文地址:http://www.cnblogs.com/lianzhilei/p/5770672.html