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中的引用和拷贝浅析
Nov 22 Python
Python通过90行代码搭建一个音乐搜索工具
Jul 29 Python
Python+Opencv识别两张相似图片
Mar 23 Python
python3.5基于TCP实现文件传输
Mar 20 Python
Django model反向关联名称的方法
Dec 15 Python
使用python实现kNN分类算法
Oct 16 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
Nov 26 Python
python装饰器相当于函数的调用方式
Dec 27 Python
django 文件上传功能的相关实例代码(简单易懂)
Jan 22 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
Apr 29 Python
使用K.function()调试keras操作
Jun 17 Python
python基础之匿名函数详解
Apr 21 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
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
2006/10/09 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
PHP预定义接口――Iterator用法示例
2020/06/05 PHP
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
jQuery层次选择器选择元素使用介绍
2013/04/18 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
2013/11/08 Javascript
JavaScript实现数组随机排序的方法
2015/06/26 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
Vue中fragment.js使用方法详解
2017/03/09 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
2019/01/18 Javascript
javascript中join方法实例讲解
2019/02/21 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
2019/04/10 Javascript
了解JavaScript函数中的默认参数
2019/05/30 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
2019/11/14 Javascript
Node.js API详解之 readline模块用法详解
2020/05/22 Javascript
对Python w和w+权限的区别详解
2019/01/23 Python
说说如何遍历Python列表的方法示例
2019/02/11 Python
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
用Python识别人脸,人种等各种信息
2019/07/15 Python
使用python实现kNN分类算法
2019/10/16 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
python基于pygame实现飞机大作战小游戏
2020/11/19 Python
PHP开发的一般流程
2013/08/13 面试题
在数据文件自动增长时,自动增长是否会阻塞对文件的更新
2014/05/01 面试题
2014年关工委工作总结
2014/11/17 职场文书
针对吵架老公保证书
2015/05/08 职场文书
2015年房产销售工作总结范文
2015/05/22 职场文书
团结友爱主题班会
2015/08/13 职场文书
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL