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程序设计入门(5)类的使用简介
Jun 16 Python
初步介绍Python中的pydoc模块和distutils模块
Apr 13 Python
python模块之re正则表达式详解
Feb 03 Python
Python聊天室程序(基础版)
Apr 01 Python
基于numpy.random.randn()与rand()的区别详解
Apr 17 Python
Python运维之获取系统CPU信息的实现方法
Jun 11 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
Jul 09 Python
Python闭包思想与用法浅析
Dec 27 Python
python快排算法详解
Mar 04 Python
Form表单及django的form表单的补充
Jul 25 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
Aug 06 Python
解决Django Haystack全文检索为空的问题
May 19 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
How do I change MySQL timezone?
2008/03/26 PHP
php中取得URL的根域名的代码
2011/03/23 PHP
比较简单的百度网盘文件直链PHP代码
2013/03/24 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
Prototype ObjectRange对象学习
2009/07/19 Javascript
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
基于jQuery实现二级下拉菜单效果
2016/02/01 Javascript
javascript使用Promise对象实现异步编程
2016/03/01 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
微信小程序入门教程
2016/11/18 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
vue 不使用select实现下拉框功能(推荐)
2018/05/17 Javascript
vue中使用heatmapjs的示例代码(结合百度地图)
2018/09/05 Javascript
Angular父子组件通过服务传参的示例方法
2018/10/31 Javascript
electron制作仿制qq聊天界面的示例代码
2018/11/26 Javascript
vue使用自定义指令实现拖拽
2021/01/29 Javascript
vue data变量相互赋值后被实时同步的解决步骤
2020/08/05 Javascript
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
python中文乱码不着急,先看懂字节和字符
2017/12/20 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
python实现微信自动回复及批量添加好友功能
2019/07/03 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
2020/02/25 Python
捷克鲜花配送:Florea.cz
2018/10/29 全球购物
英国索普公园票务和酒店套餐:Thorpe Breaks
2019/09/14 全球购物
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
奥地利手表、香水、化妆品和珠宝购物网站:Brasty.at
2021/01/17 全球购物
学生手册评语
2014/05/05 职场文书
2014年劳动部工作总结
2014/12/11 职场文书
中国世界遗产导游词
2015/02/13 职场文书
2015年机关党建工作总结
2015/05/22 职场文书
鲁滨孙漂流记读书笔记
2015/06/30 职场文书