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采用socket模拟TCP通讯的实现方法
Nov 19 Python
python文件读写操作与linux shell变量命令交互执行的方法
Jan 14 Python
基于Python实现一个简单的银行转账操作
Mar 06 Python
对Python的Django框架中的项目进行单元测试的方法
Apr 11 Python
python通过socket实现多个连接并实现ssh功能详解
Nov 08 Python
Django框架封装外部函数示例
May 28 Python
Django 源码WSGI剖析过程详解
Aug 05 Python
Python基础之字符串操作常用函数集合
Feb 09 Python
python代码实现TSNE降维数据可视化教程
Feb 28 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
Mar 25 Python
Pycharm激活方法及详细教程(详细且实用)
May 12 Python
Python OpenCV实现传统图片格式与base64转换
Jun 13 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
追求程序速度,而不是编程的速度
2008/04/23 PHP
php笔记之:AOP的应用
2013/04/24 PHP
PHP中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
PHP中文编码小技巧
2014/12/25 PHP
PHP实现合并discuz用户
2015/08/05 PHP
ToolTips JQEURY插件之简洁小提示框效果
2011/11/19 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
iframe窗口高度自适应的又一个巧妙实现思路
2014/04/04 Javascript
js控制容器隐藏出现防止样式变化的两种方法
2014/04/25 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
canvas实现钟表效果
2017/02/13 Javascript
微信小程序 ecshop地址三级联动实现实例代码
2017/02/28 Javascript
IntelliJ IDEA 安装vue开发插件的方法
2017/11/21 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
2020/02/21 Javascript
[03:22]DOTA2超级联赛专访单车:找到属于自己的英雄
2013/06/08 DOTA
python正则表达式re模块详细介绍
2014/05/29 Python
在Django框架中伪造捕捉到的URLconf值的方法
2015/07/18 Python
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
Python中Threading用法详解
2017/12/27 Python
Python函数返回不定数量的值方法
2019/01/22 Python
pymongo中group by的操作方法教程
2019/03/22 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
python动态规划算法实例详解
2020/11/22 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
品质管理部岗位职责范文
2014/03/01 职场文书
投标担保书范文
2014/04/02 职场文书
文明生主要事迹
2014/05/25 职场文书
班级学习雷锋活动总结
2014/07/04 职场文书
2015年教务工作总结
2015/05/23 职场文书
Linux系统下安装PHP7.3版本
2021/06/26 PHP