python基础——匿名函数及递归函数
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基础——匿名函数及递归函数的更多相关文章
- python基础——匿名函数
python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...
- Python入门-匿名函数,递归函数,主函数
1.三目运算符 对简单的条件语句,可以用三元运算简写.三元运算只能写在一行代码里面 # 书写格式 result = 值1 if 条件 else 值2 # 如果条件成立,那么将 "值1&quo ...
- python之匿名函数和递归函数
递归函数 <1>什么是递归函数 通过前面的学习知道一个函数可以调用其他函数. 如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数. <2>递归函数的作用 ...
- python基础-匿名函数、内置函数、正则表达式、模块
1. 匿名函数 1.1 有名函数 有名函数:定义了一个函数名,函数名指向内存地址:通过函数名进行访问.函数名加括号就可以运行有名函数,例如:func() def func(x, y, z = 1): ...
- python基础-匿名函数和内置函数
匿名函数和内置函数 匿名函数:没有名字,使用一次即被收回,加括号就可以运行的函数. 语法:lambda 参数:返回值 使用方式: 将匿名函数赋值给变量,给匿名函数一个名字,使用这个变量来调用(还不如用 ...
- python基础--匿名函数
def calc(x): return x+1 a=calc(10) print(calc) print(lambda x:x+1)#lambda函数的内存地址,利用函数名可以作为值传递给变量 b=l ...
- python全栈开发之匿名函数和递归函数
python 匿名函数和递归函数 python全栈开发,匿名函数,递归函数 匿名函数 lambda函数也叫匿名函数,即函数没有具体的名称.是为了解决一些功能很简单需求而设计的一句话函数.如下: #这段 ...
- 小学生都能学会的python(<lamda匿名函数,sorted(),filter(),map(),递归函数>)
小学生都能学会的python(<<lamda匿名函数,sorted(),filter(),map(),递归函数,二分法>> 1. lambda 匿名函数 lambda 参数: ...
- python基础——filter函数
python基础——filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...
随机推荐
- Shiro【授权、整合Spirng、Shiro过滤器】
前言 本文主要讲解的知识点有以下: Shiro授权的方式简单介绍 与Spring整合 初始Shiro过滤器 一.Shiro授权 上一篇我们已经讲解了Shiro的认证相关的知识了,现在我们来弄Shiro ...
- js中, 用变量或对象作为if或其他条件的表达式
源: 因为js是弱语言, 就体现在js的变量是弱类型的, 在js中所有变量类型声明都用var, 而在其他强类型语言中,如java/c,必须有强制类型转换和类型检查才能编译通过等, 但是: 弱语言也有优 ...
- SAS9.2的增强编辑器注册解决方案
系统环境:Win10,64位,SAS9.2破解版 问题: 原win7换成win10后,重装SAS9.2,增强编辑器无法使用. 解决方案: 方案一: 点击"视图"-选择程序编辑器,这 ...
- 常用数据库连接池 (DBCP、c3p0、Druid) 配置说明
1. 引言 1.1 定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库 ...
- Spring Boot 1.4测试的改进
对Pivotal团队来说,工作上的好事情是他们拥有一个被叫做Pivotal Labs的灵活发展部门,拥有Labs团队的Lean 和 XP程序设计方法学的强大支持,例如结对编程和测试驱动开发.他们对于测 ...
- 【Python】 python对象的文件化 pickle
pickle 之前隐隐约约在哪里看到过pickle这个模块但一直没怎么用过.然后让我下定决心学习一下这个模块的原因竟然是[妹抖龙女(男)主在工作中用到了pickle哈哈哈].嗯嗯,不扯皮了.pickl ...
- 关于bootstrap的form表单的输入框间距样式
<!-- 模态弹出窗内容 --> <div class="modal" tabindex="-1" role="dialog&quo ...
- Algorithm --> 快速排序
快速排序 算法思想 快速排序采用的思想是分治思想. 快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的 元素值都 ...
- Linux下的硬链接与软链接
本文总结自: https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html#fig2 一个文件可以用下图表 ...
- php设计模式七 ---组合模式
1.介绍 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结 ...