本文是学习廖雪峰官网网站python教程后总结的,供日后参考用
1.高阶函数
一个函数作为另一个函数的参数,或将函数作为结果返回称为高阶函数。

示例1:将函数作为参数

def add(x,y,f):
    return f(x)+f(y)
result = add(-3,2,abs)
print(result) # 5 

示例2:将函数作为结果返回

def func(x,y):
    def add():
        return x+y
    return add
f = func(2,3)
print(f) # Out:<function func.<locals>.add at 0x0000019D1F420158> 
result = f()
print(result) # 5   

2.匿名函数

f = lambda x: x*x
print(f) # <function <lambda> at 0x0000019D1F420158>
result = f(5)
print(result) # 25

3.装饰器
装饰器(decorator)就是一个高阶函数,在代码运行期间动态增加功能。

无参数的装饰器示例:

import functools
def log(func):
    # 经过装饰的函数名称发生改变,此方法解决这个问题
    @functools.wraps(func)
    def wrapper(*args,**kw):
        print('call %s:' % func.__name__)
        return func(*args,**kw)
    return wrapper
@log
def now():
    print("2018-2-4")
now() # call now: 2018-2-4

带参数的装饰器示例:

import functools
def log(text):
    def decorator(func):
        # 经过装饰的函数名称发生改变,此方法解决这个问题
        @functools.wraps(func)
        def wrapper(*args, **kw):
            print('%s %s():' % (text, func.__name__))
            return func(*args, **kw)
        return wrapper
    return decorator
@log('execute')
def now():
    print('2015-3-25')
now() # execute now(): 2015-3-25

4.偏函数
偏函数就是把一个函数的某些参数设置了默认值

import functools
int2 = functools.partial(int, base=2)
result = int2('100000')
print(result) # 32
# 等价于
# def int2(x, base=2):
#    return int(x, base)

Joker
45 声望2 粉丝

Joker never give up