Python 函数式编程介绍

带着函数的函数,真说是神奇的很

函数式编程

 **********

map(函数名,List):函数带一个参数

def f(x):
return x*x
print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
输出结果:

[1, 4, 9, 10, 25, 36, 49, 64, 81]

**********
reduce(函数名,List):函数带俩参数
reduce(函数名,List,初始值)
def f(x, y):
return x + y
print reduce(f, [1, 3, 5, 7, 9])

输出结果:

[25]

********** 

def f(x, y):
return x + y
print reduce(f, [1, 3, 5, 7, 9],10)

输出结果:

[35]

 **********

strip()默认删除空白符(包括' ', ' ', ' ', ' '),如下:
a=' 123 '
a.strip()
结果:'123'

 ************

filter(函数名,List)这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
首先,要编写一个判断奇数的函数:

def is_odd(x):
return x % 2 == 1
然后,利用filter()过滤掉偶数:

filter(is_odd, [1, 4, 6, 7, 9, 12, 17])
结果:[1, 7, 9, 17]

**************

sorted()函数可对list进行排序,从小到大

sorted()也可以对字符串进行排序,字符串默认按照ASCII大小来比较

sorted(List,函数名):可以实现自定义排序。对于sorted(x,y),如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。

**************
函数可以返回函数值也可以返回函数名(return f()——return f)

**************

内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)

当内部参数发生改变,函数返回值也就变了。

************

匿名函数 lambda  x:f(x)

例: lambda x: x * x 实际上就是:

def f(x):
    return x * x

关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数。

匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。

使用匿名函数,可以不必定义函数名,直接创建一个函数对象,很多时候可以简化代码。但没法提高效率。

************

 函数名.__name__  返回函数名

比如高阶函数调用函数作为参数,可以用.__name__显示调用的函数名

************

装饰函数:(这个真的很神奇,我都没想到一个圈A竟然这么有用)

在指定函数上写一个  @XXXXX 简化代码,实现相关功能

@log——打印日志

@performance——检测性能

@transaction——数据库事务

@post('/register/')——URL路由

原文地址:https://www.cnblogs.com/6luv-ml/p/7285894.html