高阶函数 函数式编程

发布于:2023-01-04 ⋅ 阅读:(661) ⋅ 点赞:(0)

函数式编程

函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任 务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。

而函数式编程(请注意多了一个“式”字)——Functional Programming,虽然也可以归结到面向过程的程序设计, 但其思想更接近抽象的计算。

我们首先要搞明白计算机(Computer)和计算(Compute)的概念。

在计算机的层次上,CPU执行的是加减乘除的指令代码,以及各种条件判断和跳转指令,所以,汇编语言是最贴近 计算机的语言。

而计算则指数学意义上的计算,越是抽象的计算,离计算机硬件越远。

对应到编程语言,就是越低级的语言,越贴近计算机,抽象程度低,执行效率高,比如C语言;越高级的语言,越 贴近计算,抽象程度高,执行效率低,比如Python语言。

函数式编程就是一种抽象程度很高的编程范式。

函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!

我们想到,函数可以传参数,而函数名可以做变量,那我们函数里面的参数,也可以传入函数名,

#定义一个函数,传入一个列表[1,2,3,4,5,6,7],返回一个新的列表[每个数字的阶乘 ][1!,2!]

#已经存在一个阶乘函数

def test1(num):  #计算一个数字的阶乘
    if num==1:
        return 1
    else:
        return num * test1(num-1)  #n!=n*(n-1)!


#test2 是高阶函数,他的参数其中,第二个参数是函数本身    函数2把函数1当成参数传入其中
def test2(list,func):
    new_list=[]
    for x in list:
        new_list.append(func(x))
    return new_list

list1=[1,2,3,4,5,6,7]

print(test2(list1,test1))

def test2(list, func):

这里的func只是一个形参,在函数内部中并没有赋值

在test2(list1, test1)这个语句中,将list赋值为list1,将func赋值为test1


网站公告

今日签到

点亮在社区的每一天
去签到