函数式编程
概念:
1.函数式编程是一种编程范式,是面向数学的抽象,其将计算描述为一种表达式求值。
2.函数式编程中的“函数”不是指计算机中的函数,而是指数学中的函数,即自变量的映射。
3.函数式编程的特点:允许把函数本身作为参数传入另一个函数,还允许返回一个函数。
4.Python语言对函数式编程提供部分支持。由于允许使用变量,所以说Python语言不是纯函数式编程语言。
高阶函数
概念:接受函数为参数,或者把函数作为结果返回的函数称为高阶函数。
示例:根据单词的长度排序。
fruits=['strawberry','fig','apple','cherry','raspberry','banana']
print(sorted(fruits,key=len))
# 输出结果如下:
# ['fig', 'apple', 'cherry', 'banana', 'raspberry', 'strawberry']
fruits=['strawberry','fig','apple','cherry','raspberry','banana']
print(sorted(fruits,key=len))
# 输出结果如下:
# ['fig', 'apple', 'cherry', 'banana', 'raspberry', 'strawberry']
fruits = ['strawberry', 'fig', 'apple', 'cherry', 'raspberry', 'banana']
def reverse(word):
return word[::-1]
print(reverse('testing')) # 结果是:gnitset
print(sorted(fruits, key=reverse))
# 输出结果如下:
# ['banana', 'apple', 'fig', 'raspberry', 'strawberry', 'cherry']
注意事项:在示例中列表里的单词没有变,只是把反向拼写当作排序条件,因此各种浆果(berry)都排在一起。在函数式编程范式中,最为人熟知的高阶函数有map、filter、reduce 和apply。其中,apply函数在Python2.3中标记为过时,在Python3已移除。
匿名函数
概念:匿名函数是不再使用def语句,这样标准形式定义的函数。Python语言经常使用lambda 来创建匿名函数。lambda 只是一个表达式,函数体比def定义的函数体要简捷。
示例:lambda函数的语法。
lambda [arg1[,arg2],....argn]]:expression
示例:
sum = lambda arg1, arg2: arg1 + arg2
print(sum(1, 2)) # 结果是:3
示例中:第一行定义了一个lambda函数,执行两个数的和运算,并且把该lambda函数命名为sum。会面的代码通过sum()函数即实现了调用lambda函数的功能。