python高阶函数心得笔记,python高阶函数知识
创始人
2024-02-10 03:45:38
0

递归函数

<1>什么是递归函数

通过前面的学习知道一个函数可以调用其他函数。

如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数。

<2>递归函数的作用

举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n

解决办法1:使用循环来完成

def cal(num):
    result,i = 1,1
    while i <= num:
        result *= i
        i+= 1
    return result
 
print(cal(3))

看阶乘的规律

1! = 1
2! = 2 × 1 = 2 × 1!
3! = 3 × 2 × 1 = 3 × 2!
4! = 4 × 3 × 2 × 1 = 4 × 3!
...
n! = n × (n-1)!

解决办法2:使用递归来实现

def factorial(num):
    result = 1
    if num == 1:
        return 1
    result = num * factorial(num -1)
    return result
print(cal(3))

原理

匿名函数

用lambda关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。

lambda函数的语法只包含一个语句,如下:

lambda 参数列表: 运算表达式

如下实例:

sum = lambda arg1, arg2: arg1 + arg2
# 调用sum函数
print("Value of total : %d" % sum( 10, 20 ))
print("Value of total : %d" % sum( 20, 20 ))

以上实例输出结果:

Value of total :  30
Value of total :  40

Lambda函数能接收任何数量的参数但只能返回一个表达式的值

匿名函数可以执行任意表达式(甚至print函数),但是一般认为表达式应该有一个计算结果供返回使用。

python在编写一些执行脚本的时候可以使用lambda,这样可以接受定义函数的过程,比如写一个简单的脚本管理服务器。

应用场合

函数作为参数传递

>>> def fun(a, b, opt):...     print("a = " % a)...     print("b = " % b)...     print("result =" % opt(a, b))
...>>> add = lambda x,y:x+y>>> fun(1, 2, add)  # 把 add 作为实参传递
a = 1
b = 2
result = 3

练习:

有一个列表

students = [
    {'name': 'zhangsan', 'age': 18, 'score': 92},
    {'name': 'lisi', 'age': 20, 'score': 90},
    {'name': 'wangwu', 'age': 19, 'score': 95},
    {'name': 'jerry', 'age': 21, 'score': 98},
    {'name': 'chris', 'age': 17, 'score': 100},
]

要求,对上述列表里的数据按照score进行升序排序。

Python中使用函数作为参数的内置函数和类:

函数名或类名

功能

参数描述

sorted函数

用来将一个无序列表进行排序

函数参数的返回值规定按照元素的哪个属性进行排序

filter类

用来过滤一个列表里符合规定的所有元素,得到的结果是一个迭代器

函数参数的返回值指定元素满足的过滤条件

map类

将列表里的每一项数据都执行相同的操作,得到的结果是一个迭代器

函数参数用来指定列表里元素所执行的操作

reduce函数

对一个序列进行压缩运算,得到一个值。python3以后,这个方法被移到了functools模块

函数参数用来指定元素按照哪种方式合并

高阶函数

在Python中,函数其实也是一种数据类型。

def test():
    return 'hello world'
print(type(test))  # 

函数对应的数据类型是 function,可以把它当做是一种复杂的数据类型。

既然同样都是一种数据类型,我们就可以把它当做数字或者字符串来处理。

定义一个变量指向函数

在Python中,我们还可以定义一个变量,让它来指向一个函数,相当于给函数起了一个别名。

def test():
    return 'hello wrold'
 
fun = test   # 定义了一个变量fun,让它指向了 test 这个函数
print(fun())   # 使用fun()可以直接调用test这个函数
 
print(id(fun))  # 1819677672040
print(id(test))  # 1819677672040

注意:在定义一个变量表示一个函数时,函数后面不能加括号!加括号表示的是调用这个函数。

def test():
    return 'hello world'
 
result = test()   # 这种写法是调用test函数,并把函数的返回值赋值给result变量
print(result())   # 这里会报错  TypeError: 'str' object is not callable
 
fun = test   # 这种写法是给test函数起了一个别名,注意,这里的test后面不能加()
fun()        # 可以使用别名调用这个函数

高阶函数

既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,同样,我们还可以把一个函数当做另一个函数的返回值。这种函数的使用方式我们称之为高阶函数。

函数做为另一个函数的参数

def test(age,action):
    if age < 18:
        print('您还没满十八岁,请退出')
    action()   # 把参数action直接当做一个函数来调用
def smoke():
    print('我已经年满十八岁了,我想抽烟')
 
my_action = smoke  # 定义一个变量my_action,让它指向smoke函数
test(21, my_action)  # 将my_action传给 test 函数作为它的参数
 
test(21,smoke)  # 还可以不再定义一个新的变量,直接传入函数名

函数作为另一个函数的返回值

def test():

    print('我是test函数里输入的内容')

def demo():

    print('我是demo里输入的内容')

    return test  # test 函数作为demo函数的返回值

result = demo()  # 我是demo里输入的内容  调用 demo 函数,把demo函数的返回值赋值给 result

print(type(result)) #   result 的类型是一个函数

result() # 我是demo里输入的内容    我是test函数里输入的内容   既然result是一个函数,那么就可以直接使用() 调用这个函数

demo()()  # 我是demo里输入的内容    我是test函数里输入的内容

 

相关内容

热门资讯

拟办的方法 拟办的方法 拟办的方法,应具体问题具体分析,不能千篇一律地写为:“请“秘书工作”同志批示”,应针对不...
学生会议通知 学生会议通知  在社会发展不断提速的今天,我们用到通知的地方越来越多,通告是党和国家机关、人民团体、...
韩国签证在职证明 韩国签证在职证明模板  若通过代理机构或制定旅行社进行申请时,请前往当初受理点领取签正。那么怎么写一...
妇女节问候语短信 2020年妇女节问候语短信集合39条  三八女人节日到,商场打折好热闹:衣服在打折,美丽不打折;护肤...
中西餐餐具的摆放礼仪 中西餐餐具的摆放礼仪  中式餐餐具的摆放礼仪  中式餐的摆台因餐具简单,变化较少,相对容易些,具体摆...
学生转学接收证明 学生转学接收证明学生转学接收证明学生转学接收证明接收证明学校:您校学生 ,性别 ,现年 岁,系贵校 ...
活动会议主持词开场白 活动会议主持词开场白  契合现场环境的主持词能给集会带来双倍的效果。在当下这个社会中,越来越多的活动...
庆祝教师节倡议书 庆祝教师节倡议书  在学习、工作生活中,我们都跟倡议书有着直接或间接的联系,通过倡议书可以激起更多的...
律师授权委托书 律师授权委托书范本6篇  委托书委托他人代表自己行使自己的合法权益时,委托人不得以任何理由反悔委托事...
服务质量承诺书 服务质量承诺书(通用26篇)  在不断进步的时代,承诺书应用范围愈来愈广泛,不同的承诺书内容同样也是...
治理雾霾的建议书 治理雾霾的建议书(通用11篇)  在快速变化和不断变革的新时代,很多地方都会使用到建议书,建议书是个...
中秋节问候语短信 中秋节问候语短信  在平凡的学习、工作、生活中,大家都不可避免地会接触到问候语吧,借助问候语人们可以...
唯美端午节祝福短信 唯美端午节祝福短信(通用80句)  每逢佳节"粽"思你,好友之间"粽"是情,端午节,"粽"言"粽"语...
给妈妈的一封信 给妈妈的一封信范文400字(精选10篇)  在日常学习、工作和生活中,大家都写过信,肯定对各类书信都...
打架的检讨书 有关打架的检讨书范文(精选10篇)  在学习、工作、生活中出现了失误后,为了避免再犯,往往要写检讨书...
母亲逝世短信讣告 母亲逝世短信讣告范文  在日常学习、工作和生活中,大家最不陌生的就是短信了吧,短信的类型多样,可以是...
培训服务协议书 培训服务协议书15篇  在现实社会中,很多情况下我们需要用到协议,协议协调着人与人,人与事之间的关系...
给父母一封信 给父母一封信(通用21篇)  在现实生活或工作学习中,大家一定都接触过书信吧,书信是人们用于表情达意...
婚宴邀请函 婚宴邀请函范文(精选10篇)  邀请函要求简洁明了,不需要太多文字。在社会一步步向前发展的今天,邀请...
致医院医生感谢信 【精选】致医院医生感谢信3篇  在学习、工作或生活中,大家都尝试过写信吧,借助书信人们可以传递思想、...