python函数式编程

什么是函数式编程?

      函数式编程(functional programming)是一种编程范式,也就是如何编写程序的方法论。目前我们所熟知的是命令式编程,这里的命令式编程语言泛指所有把修改变量的值当作最基本计算方式的语言,函数式编程语言指把一个程序的输出定义为其输入的数学函数的语言,纯函数式编程没有内部状态的概念,也没有副作用。

函数式编程的特点

1、函数即对象

     函数可以直接赋给变量

2、有属性和方法

>>> my_sum = sum
>>> sum([1,2,3])
6
>>> my_sum([1,2,3])
6
>>> dir(my_sum)
['__call__', '__class__', '__cmp__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
>>> my_sum.__name__
'sum'

3、函数可以做参数

>>> def f(a,b):
...     return a + b
... 
>>> def f1(func,a,b):
...     return func(a,b)
... 
>>> f1(f,1,3)
4

函数式编程和命令式编程的区别

目标:分别使用函数式编程和命令式编程实现 f(a,b,c,d) = (a+b)*c-d

命令式编程:

def f1(a,b,c,d):
    e = a + b
    f = e * c
    g = f - d
    return g

#命令式编程实现
ret = f1(a,b,c,d)

函数是实现:

def f_add(a,b):
    return a + b

def f_sub(a,b):
    return a - b
 
def f_multi(a,b):
    return a * b

#函数式编程实现
ret = f_sub(f_multi(f_add(a,b),c),d)
原文地址:https://www.cnblogs.com/max-hu/p/6218142.html