python函数的两种嵌套方法使用


Posted in Python onApril 02, 2022

python函数的两种嵌套方法使用
函数的嵌套有两种方式:

  • 交叉嵌套
  • 回环嵌套

交叉嵌套

交叉嵌套的方式是在本函数中调用同一级或上一级函数的嵌套方法:

def func(foo):
    print(1)
    foo()
    print(3)
    
def a():
    print(1)

b = func(a)
print(b)

输出的结果为:

1
1
3
None

首先,程序会将 Python 文件中顶格的代码运行。函数 func 和 a 都是先开辟内存空间存储起来,但不会被执行。当程序走到赋值操作时,会先执行等号右边的代码。函数 func 被调用,函数 a 作为参数被传到 func 中。func 函数被执行,顺序也是从上往下,先是把 1 打印出来,然后调用参数 foo。

需要注意的是,foo 是形参,实参是 a。调用 foo 在此时的意思是调用函数 a。函数 a 被调用,又打印出一个 1 来。函数 a 运行完毕,返回至函数 func,继续执行下面的代码,打印出 3 来。最后,函数默认返回 None,赋值给 b。程序运行结束。

再看下面的代码:

def func():
    print(1)
    print("我太难了")
    print(2)

def foo(b):
    print(3)
    ss = b()
    print(ss)
    print(4)

def f(a,b):
    a(b)

f(foo,func)

输出的结果为:

3
1
我太难了
2
None
4

跟上面一样,先将函数全都加载到新开辟的内存空间中,但不执行。到最后 f 函数被调用,foo 和 func 两个函数作为参数被传到函数 f 中。在函数 f 中,foo 函数被调用,参数为 func 函数。进入到 foo 函数,先打印 3。到赋值语句,先执行等号右边的代码,函数 func 被调用。

在函数 func 中,打印三个内容 1、我太难了 和 2。函数默认返回值为 None,被赋值给 ss。打印 ss 就是打印 None。最后打印 4,然后返回到函数 f,再返回到全局空间。执行结束。

回环函数

回环函数就是在函数中调用下级函数的嵌套方法:

def func(a,b):
    def foo(b,a):
        print(b,a)
    return foo(a,b) #先执行函数调用
a = func(4,7)
print(a)

输出的结果为:

4 7
None

函数依然先存储在新开辟的空间中不会被调用。运行到赋值语句时,还是先执行等号右边的代码,将两个数字传到函数 func中。在函数内部,依然是先开辟空间把函数 foo 放进去。运行到 return 不会马上终止函数,而是先运行 return 后面的代码。foo 函数被调用,传进去的值是 4 和 7,然后打印出来。

需要注意的是,函数 foo 的形参与函数 func 的形参是相同的,不要给搞混了。日常写代码时不建议这样使用。打印出 4 和 7 之后,运行到函数最后一行,函数默认返回 None。然后再赋值给 a,打印出来。

到此这篇关于python函数的两种嵌套方法使用的文章就介绍到这了,更多相关python函数嵌套内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python使用xlrd与xlwt对excel的读写和格式设定
Jan 21 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
Jun 15 Python
详解Python中如何写控制台进度条的整理
Mar 07 Python
对python中的 os.mkdir和os.mkdirs详解
Oct 16 Python
详解用Python练习画个美队盾牌
Mar 23 Python
ML神器:sklearn的快速使用及入门
Jul 11 Python
python实现本地批量ping多个IP的方法示例
Aug 07 Python
python tornado修改log输出方式
Nov 18 Python
Python实现使用dir获取类的方法列表
Dec 24 Python
Python selenium爬取微博数据代码实例
May 22 Python
5 分钟读懂Python 中的 Hook 钩子函数
Dec 09 Python
利用python实现汉诺塔游戏
Mar 01 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
Python实现提取PDF简历信息并存入Excel
Apr 02 #Python
python对文档中元素删除,替换操作
Apr 02 #Python
Python中第三方库Faker的使用详解
Python数据处理的三个实用技巧分享
Python+Tkinter打造签名设计工具
Python正则表达式中flags参数的实例详解
Apr 01 #Python
You might like
Yii框架弹出框功能示例
2017/01/07 PHP
Javascript类库的顶层对象名用户体验分析
2010/10/24 Javascript
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
2011/01/17 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
javascript实现input file上传图片预览效果
2015/12/31 Javascript
js实现的简单图片浮动效果完整实例
2016/05/10 Javascript
json的使用小结
2016/06/08 Javascript
使用bat打开多个cmd窗口执行gulp、node
2017/02/17 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
vue.js 微信支付前端代码分享
2018/02/10 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
JS实现带阴历的日历功能详解
2019/01/24 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
2019/06/24 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
vue通过v-html指令渲染的富文本无法修改样式的解决方案
2020/05/20 Javascript
微信小程序实现点击生成随机验证码
2020/09/09 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
py中的目录与文件判别代码
2008/07/16 Python
详细讲解Python中的文件I/O操作
2015/05/24 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
一道python走迷宫算法题
2018/01/22 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
python中property和setter装饰器用法
2019/12/19 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
瑞典最大的儿童用品网上商店:pinkorblue.se
2021/03/09 全球购物
教师专业理论水平的自我评价分享
2013/11/09 职场文书
建筑公司文秘岗位职责
2013/11/29 职场文书
幼儿园大班开学寄语
2014/08/02 职场文书
云南省召开党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
Python中基础数据类型 set集合知识点总结
2021/08/02 Python