Python——函数式编程

Posted on 2018-03-15 10:52  卜算子  阅读(137)  评论(0)    收藏  举报

匿名函数

关键字:lambda (本质:表达式)

1 #普通函数
2 def add(x,y):
3     return x+y
4 #匿名函数命名:
5 lambda x,y: x+y
6 #匿名函数冒号后面只能是表达式

三元表达式

条件为真时返回的结果 if 条件判断 else 条件为假时返回结果

map 类

1 list_x = [1,2,3,4,5,6,7,8 ]
2 def square(x):
3      reyurn x  * x
4 r = map(square, list_x)
5 print(list(r))
6 Result:[1,4,9,16,25,36,49,64]
7 #执行for循环
#map和匿名函数结合使用
r = map(lambda x: x*x, list_x)

map的结果列表长度取决于两组列表中最短列表的长度

reduce 函数

1 from functools import reduce
2 #连续计算, 连续调用lambda
3 #reduce必须有两个参数
4 list_x = [1,2,3,4,5,6,7,8]
5 r = reduce(lambda x,y: x+y, list_x)#第三个参数的属性为初始值
6 print(r)
7 Result: 36
8 # 运行规则 在没有传入y值时,会将x的前两个值作为x和y,进行计算。
9 # (((1+2)+3)+4)+5

filter 过滤  类

1 # 消除所有的0
2 list_x = [1,0,1,0,0,1]
3 r = filter(lambda x: True if x==1 else False,list_x) / filter(lambda x: x,list_x)
4 print(list(r))
5 Result: [1,1,1]

装饰器

# 多个函数打印当前时间
# 原则:对修改式封闭的 对扩展式开放的
# 装饰器 (模式)增加功能 函数内部不修改
import time
def decorator():#装饰器外部实现函数
    def wrapper():
        print(time.time())
    return wrapper
@decorator #语法糖
def f1(): print('This is a function') f = decorator(f1) f1() 调用不变
f() 
# 装饰器decorator 完整形态
import time 
def decorator(func):
    def wrapper(*arga,**kw):
        print(time.time())
        func(*args,**kw)
    return wrapper
# args 可变参数
# kw 关键字参数
@decorator