一、闭包

1. 函数嵌套

defouter():print("外层函数")definner():print("内层函数")returninner()

outer()

函数嵌套流程图

2. 闭包

闭包的表现形式:函数里面嵌套函数,外层函数返回内层函数的函数名,这种情况就称之为闭包

defouter():print("外层函数")definner():print("内层函数")returninner

ret= outer() #外层函数

print(ret) #.inner at 0x0000023E73AAB8B8>

ret() #内层函数

闭包流程

二、递归

我们一般用到的循环都是while True,在函数中也有死循环,就是在函数中调用函数

1. 我们用while True打印hello world

whileTrue:print("hello world!!!") #无限打印hello world

2.我们用函数内调用函数打印

defhello_world():print("hello world!!!")

hello_world()

hello_world()#maximum recursion depth exceeded while calling a Python object

函数内部调用函数进入死循环

这里造成一个死循环的原因是因为我们没有给定他一个条件

#我想用递归函数来打印10"hello world!!!"

defhello_world(x):if x <1:returnNone

x-= 1

print("hello world!!!")returnhello_world(x)print(hello_world(10))

hello world!!!

hello world!!!

hello world!!!

hello world!!!

hello world!!!

hello world!!!

hello world!!!

hello world!!!

hello world!!!

hello world!!!

None

defhello_world(x):if x <1:return "The End"

print("hello world!!!")return hello_world(x-1)print(hello_world(10))

hello world!!!

hello world!!!

hello world!!!

hello world!!!

hello world!!!

hello world!!!

hello world!!!

hello world!!!

hello world!!!

hello world!!!

The End

总结:递归函数就是函数内调用自身,并将调用的结果作为返回值返回

3.阶乘

阶乘是递归函数的一种

三、函数回调

函数回调就是定义两个函数,一个函数内将另外一个函数的函数名作为参数传入,再调用的过程。

#函数回调

deffunc1(a):print("hello world")def func2(func): #func是函数名

func()

func2(func1) # func1作为func2的参数传入

def func1(*args):print("hello world")def func2(func): #func是函数名

func()

func2(func1)#hello world

还可以添加多个参数用来设定条件

#函数回调

def func1(*args):print("hello world")def func2(func, b): #func是函数名, 当参数b满足条件的时候,才能调用这个函数

if b > 3:pass

else:

func()

func2(func1,2) #hello world

函数的回调,当我们已经存在某个功能的函数的时候,我们不需要再写,可以直接回调利用

python函数闭包和递归_python函数基础3--闭包 + 递归 + 函数回调相关推荐

  1. python 函数递归_Python零基础之三元表达式、函数递归、匿名函数教程!超级详细!...

    目录 一.三元表达式 二.函数递归 递归调用的定义 递归分为两个阶段:递归,回溯 三.匿名函数 什么是匿名函数? 有名字的函数与匿名函数的对比 lambda匿名函数的应用 四.内置函数 #注意:内置函 ...

  2. python lambda函数_python入门基础之lambda匿名函数

    lambda的一般形式是关键字lambda后面跟一个或多个参数,紧跟一个冒号,以后是一个表达式.lambda是一个表达式而不是一个语句.它能够出现在Python语法不允许def出现的地方.作为表达式, ...

  3. python主函数调用格式_Python入门基础中怎么定义函数,函数调用,函数传递参数...

    什么是函数和为什么要用函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.已经知道Python提供了许多内建函数,比如print(). ...

  4. python中高阶函数map怎么用_python六十课——高阶函数之map

    1.高阶函数: 特点:函数的形参位置必须接受一个函数对象 分类学习: 1).map(fn,lsd1,[lsd2...]): 参数一:fn --> 函数对象 参数二:lsd1 --> 序列对 ...

  5. python海龟库如何导入_Python 中的海龟绘图turtle函数库的详细使用方法

    Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行 ...

  6. python的应用领域和常用函数模块有哪些_Python模块导入区别与常用函数案例

    作者:Nature 出品:AI机器思维 Python中包含很多模块,每个领域的应用有关专家开发了相应的模块,必须将其导入到python中,然后才能使用.每个模块安装导入后才能引用,下面通过math模块 ...

  7. python中函数startswith的用法_Python中的startswith和endswith函数使用实例

    在Python中有两个函数分别是startswith()函数与endswith()函数,功能都十分相似,startswith()函数判断文本是否以某个字符开始,endswith()函数判断文本是否以某 ...

  8. python中print语法错误_Python 3.x中使用print函数出现语法错误(SyntaxError: invalid syntax)的原因...

    在安装了最新版本的Python 3.x版本之后, 去参考别人的代码(基于Python 2.x写的教程),去利用print函数,打印输出内容时,结果却遇到print函数的语法错误: SyntaxErro ...

  9. python回调函数实例详解_python 简单的例子下详解回调函数

    回调的英文定义: A callback is a function that is passed as an argument to another function and is executed ...

  10. python创建对象的格式为_Python入门基础学习(面向对象)

    python基础学习笔记(四) 面向对象的三个基本特征: 封装:把客观事物抽象并封装成对象,即将属性,方法和事件等集合在一个整体内 继承:允许使用现有类的功能并在无须重新改写原来的类情况下,对这些功能 ...

最新文章

  1. RocketMQ的原理与实践
  2. 最全!最完整的递归下降分析法代码!!! (实验报告,代码)
  3. excel表格中添加combobox_excel高阶打印技巧:批量为表格添加logo,学会它老板都夸你厉害...
  4. 信用逾期3年是不是一定会坐牢?
  5. 调用 usb_control_msg 返回错误值 -32, Broken pipe, 对 hidraw write时 返回错误值 -32, Broken pipe
  6. 百度将砸钱100多亿元建云计算中心(2012-09-03)
  7. js进阶 14-9 ajax事件有哪些
  8. 2019年3月训练记录(3.01~3.23)
  9. word文档总让正文与目录分开在不同的页——分页符的使用
  10. 百旺智能编码_极速开票,智能编码,一键匹配,颠覆了传统手动输入的开票模式,再也不用担心选错税收分类编码啦...
  11. 寻找2020java 蓝桥杯
  12. 阿里云oss出现Unable to execute HTTP request: bucket.二级域名.域名: nodename nor servname provided, or not known
  13. 奥古斯丁:我是一去不回的风
  14. numpy的narray数组与txt文件的相互转化
  15. 操作BLOB、CLOB、BFILE
  16. 面试题:o2o,b2c、b2b、c2c、p2p、b2b2c....这些内容是什么意思
  17. 推荐系统 - 基于标签的推荐算法
  18. 输入学生的学号及语文、数学、英语成绩, 输出学生各科成绩及率均成绩信息
  19. 100天精通Oracle-实战系列(第16天)使用 RMAN 备份快速恢复误删数据表
  20. 数据结构[1]--学习--绪论(学习记录)

热门文章

  1. R语言基于DALEX包进行特征筛选(feature selection)
  2. R语言在可视化图像中添加文本(Adding Text to plot)
  3. NLP命名实体识别NER数据准备及模型训练实例
  4. 可视化神经网络的网络结构并保存
  5. R包stringr处理字符串
  6. 对Java基本数据类型的再思考
  7. Nginx配置使用积累[不断更新]
  8. java控制台next_java读取控制台输入以及next() ,nextLine(), nextInt() 和nextDouble()的比较...
  9. electron窗口自适应_Go 限流器系列(3)自适应限流
  10. tensorflow tensor 张量 部分采样 切片和索引