5-6 Python 函数式编程常考题
Posted WinvenChang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5-6 Python 函数式编程常考题相关的知识,希望对你有一定的参考价值。
一、函数式编程
Python
支持部分函数式编程特性
1.把电脑的运算视作数学上的函数计算(lambda
演算)
2.高阶函数:map
/reduce
/filter
3.无副作用,相同的参数调用始终产生同样的结果
map
的用法:
# map
m = list(map(lambda x: x*2, range(10)))
print(m) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
# 一般推荐列表推导代替 map
l = [i*2 for i in range(10)]
print(l) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
reduce
的用法:
from functools import reduce
l = reduce(lambda x, y: x+y, range(1, 6)) # 求1加到5的和
print(l) # 15
filter
的用法
l = filter(lambda x: x%2==0, range(10))
print(l) # [0, 2, 4, 6, 8]
# 同样也可以用列表推导
l2 = [i for i in range(10) if i %2 == 0]
print(l2) # [0, 2, 4, 6, 8]
二、什么是闭包?
Closure
1.绑定了外部作用域的变量的函数
2.即使程序离开外部作用域,如果闭包仍然可见,绑定变量不会销毁
3.每次运行外部函数都会重新创建闭包
代码示例:
from functools import wraps
def cache(func): # 装饰器
store = {} # 外部变量
@wraps(func)
def _(n): # 闭包函数
if n in store:
return store[n]
else:
res = func(n)
store[n] = res
return res
return _
@cache
def f(n): # 斐波那契数列
if n <= 1:
return 1
return f(n-1) + f(n - 2)
说明:
闭包:引用了外部自由变量的函数
自由变量:不在当前函数定义的变量
特性:自由变量会和闭包函数同时存在
以上是关于5-6 Python 函数式编程常考题的主要内容,如果未能解决你的问题,请参考以下文章