python基础——匿名函数及递归函数

1 匿名函数语法

匿名函数lambda x: x * x实际上就是:

def f(x):
return x * x

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

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

2 匿名函数举例

用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数:

>>> f = lambda x: x * x
>>> f
<function <lambda> at 0x10453d7d0>
>>> f(5)
25

同样,也可以把匿名函数作为返回值返回,比如:

def build(x, y):
return lambda: x * x + y * y

  

递归函数 

1、递归函数定义

递归就是引用(或者调用)自己的意思

有用的递归函数包含以下几个部分:

1 必须有一个明确的结束条件

2 每次进入更深一层递归时,问题规模相比于上次递归都应有减少

3 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用时通过栈stack这种数据结构实现的,每当进入一个函数调用,栈就会加一层帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出,程序会以一个“超过最大递归深度”的错误信息结束)

递归中每次函数被调用,针对这个调用函数的新命名空间会被创建,意味着当函数调用“自身”时,实际上运行的是两个不同的函数(或者说是同一个函数具有两个不同的命名空间)

递归的深度:

import sys
print(sys.getrecursionlimit())

输出结果为:

1000

  

2 递归函数实现二分法举例

二分法举例:

data=list(range(1000))
def sear(num,data):
if len(data)>1:
#二分
mid_index=int(len(data)/2)
mid_value=data[mid_index]
if num > data[mid_index]:
#num在列表的右边
data=data[mid_index:]
sear(num,data)
elif num < data[mid_index]:
#num在列表的左边
data=data[:mid_index]
sear(num,data)
else:
print("find it")
return
else:
if data[0]==num:
print('find it')
else:
print('not exists')
sear(0,data)
sear(999,data)
sear(10000,data)

输出结果为:

find it
find it
not exists

求5的阶乘

def num (n):
if n == 1:
return 1
else:
return num (n-1)*n
print(num(5))

输出结果为:

120

  

方法和函数的区别

1 调用方法不一样 函数括号 方法点号

2 方法只对调用它的对象有用

函数没有绑定任何对象

方法可以绑定到具体的对象

函数式编程

函数式编程概念

编程风格

1不会修改外部值的状态

2 精简,可读性差

python基础——匿名函数及递归函数的更多相关文章

  1. python基础——匿名函数

    python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便.  在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...

  2. Python入门-匿名函数,递归函数,主函数

    1.三目运算符 对简单的条件语句,可以用三元运算简写.三元运算只能写在一行代码里面 # 书写格式 result = 值1 if 条件 else 值2 # 如果条件成立,那么将 "值1&quo ...

  3. python之匿名函数和递归函数

    递归函数 <1>什么是递归函数 通过前面的学习知道一个函数可以调用其他函数. 如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数. <2>递归函数的作用 ...

  4. python基础-匿名函数、内置函数、正则表达式、模块

    1. 匿名函数 1.1 有名函数 有名函数:定义了一个函数名,函数名指向内存地址:通过函数名进行访问.函数名加括号就可以运行有名函数,例如:func() def func(x, y, z = 1): ...

  5. python基础-匿名函数和内置函数

    匿名函数和内置函数 匿名函数:没有名字,使用一次即被收回,加括号就可以运行的函数. 语法:lambda 参数:返回值 使用方式: 将匿名函数赋值给变量,给匿名函数一个名字,使用这个变量来调用(还不如用 ...

  6. python基础--匿名函数

    def calc(x): return x+1 a=calc(10) print(calc) print(lambda x:x+1)#lambda函数的内存地址,利用函数名可以作为值传递给变量 b=l ...

  7. python全栈开发之匿名函数和递归函数

    python 匿名函数和递归函数 python全栈开发,匿名函数,递归函数 匿名函数 lambda函数也叫匿名函数,即函数没有具体的名称.是为了解决一些功能很简单需求而设计的一句话函数.如下: #这段 ...

  8. 小学生都能学会的python(<lamda匿名函数,sorted(),filter(),map(),递归函数>)

    小学生都能学会的python(<<lamda匿名函数,sorted(),filter(),map(),递归函数,二分法>> 1. lambda 匿名函数 lambda 参数: ...

  9. python基础——filter函数

    python基础——filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...

随机推荐

  1. Java设计模式(五)Prototype原型模式

    一.场景描述 创建型模式中,从工厂方法模式,抽象工厂模式,到建造者模式,再到原型模式,我的理解是,创建对象的方式逐步从编码实现转向内存对象处理. 例如,在“仪器数据采集器”的子类/对象“PDF文件数据 ...

  2. vue的图片上传

    转载  代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  3. 微信小程序学习笔记(阶段一)

    一阶段学习过程: (一)看官方文档的简易教程:https://mp.weixin.qq.com/debug/wxadoc/dev/ (二)看小码哥视频:https://chuanke.baidu.co ...

  4. 【Python】 更棒的Excel操作模块xlwings

    [xlwings] 说到Python操作Excel,有好多模块都可以支持这个工作.比如最底层的win32模块不仅可以操作Excel,还可以操作其他一众windows的软件. 其他的比较熟悉的有xlrd ...

  5. javaAPI中的常用 类 以及接口

    java.lang包中的常用类以及接口 类 1. Integer :Integer 类在对象中包装了一个基本类型 int 的值.Integer 类型的对象包含一个 int 类型的字段. 2. Math ...

  6. Beta No.2

    今天遇到的困难: 组员对github极度的不适应 Android Studio版本不一致项目难以打开运行 移植云端的时候,愚蠢的把所有项目开发环境全部搬上去.本身云的内存小,性能差,我们花费了太多时间 ...

  7. Alpha冲刺No.6

    站立式会议 继续页面设计 在安卓内构件数据库相应类 解决摄像头.照片的使用的异常问题 二.实际项目进展 页面设计完成百分80 类架构完成 在虚拟机中,能够完成摄像头的调用和程序的使用 三.燃尽图 四. ...

  8. 简易web服务器

    当通过Socket开发网络应用程序的时候,首先需要考虑所使用的网络类型,主要包括以下三个方面: 1)Socket类型,使用网络协议的类别,如IPv4的类型为PF_INET. 2)数据通信的类型,常见的 ...

  9. 201621123050 《Java程序设计》第9周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 ①foreach循环 for (String e : map.keyS ...

  10. 弹幕视频播放app案例分析

    产品 哔哩哔哩动画 相对于其他视频播放软件来说,哔哩哔哩动画没有广告影响观看体验,而且内容更偏重于二次元,因此我更倾向于使用它. 第一部分 调研, 评测 #第一次上手体验 用起来还是比较方便,可以快速 ...