关于python高级函数的一些操作


返回函数和装饰器

函数作为返回值

  • python 调用高阶函数返回其内部一个函数时,会保存高阶函数中的参数,这种称为‘闭包’的结构具有很大的威力
def lazy_sum(*args):
    def sum():
        ax = 0
        for i in args:
            ax = ax + i
        return ax
    return sum
f = lazy_sum(1,2,3,4,5)
f()
15
#而且每次调用都会返回一个新的函数,即使传入参数相同
f1 = lazy_sum(1,2,3)
f2 = lazy_sum(1,2,3)
f1==f2
False

装饰器

def log(func):
    def wrapper(*args, **kw):
        print('call %s()' % func.__name__)
        return func()
    return wrapper
@log
def now():
    print('2017/08/13')
now()
call now()
2017/08/13
def log1(func):
    print('call %s()' %func.__name__)
    return func
@log1
def now1():
    print('2017/08/13')
now1()
call now1()
2017/08/13

文章作者: lovelyfrog
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 lovelyfrog !
  目录