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求两个文本文件以行为单位的交集、并集与差集的方法
Jun 17 Python
python编写分类决策树的代码
Dec 21 Python
对dataframe进行列相加,行相加的实例
Jun 08 Python
python实现从pdf文件中提取文本,并自动翻译的方法
Nov 28 Python
Python multiprocessing多进程原理与应用示例
Feb 28 Python
centos 安装Python3 及对应的pip教程详解
Jun 28 Python
python读取Excel表格文件的方法
Sep 02 Python
原来我一直安装 Python 库的姿势都不对呀
Nov 11 Python
Django框架反向解析操作详解
Nov 28 Python
Pycharm配置PyQt5环境的教程
Apr 02 Python
Python如何截图保存的三种方法(小结)
Sep 01 Python
浅谈Python数学建模之整数规划
Jun 23 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
PHP生成带有雪花背景的验证码
2006/10/09 PHP
《PHP编程最快明白》第三讲:php数组
2010/11/01 PHP
PHP读取Excel类文件
2017/05/15 PHP
PHP getName()函数讲解
2019/02/03 PHP
关于使用runtimeStyle属性问题讨论文章
2007/03/08 Javascript
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
JS实现点击按钮获取页面高度的方法
2015/11/02 Javascript
JS实现设置ff与ie元素绝对位置的方法
2016/03/08 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
浅谈函数调用的不同方式,以及this的指向
2017/09/17 Javascript
详细介绍RxJS在Angular中的应用
2017/09/23 Javascript
详解node+express+ejs+bootstrap构建项目
2017/09/27 Javascript
浅谈React Event实现原理
2018/09/20 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
2019/04/19 Javascript
vue项目部署到nginx/tomcat服务器的实现
2019/08/26 Javascript
基于ajax及jQuery实现局部刷新过程解析
2020/09/12 jQuery
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
python基础教程之基本内置数据类型介绍
2014/02/20 Python
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
Python上下文管理器和with块详解
2017/09/09 Python
Sanic框架路由用法实例分析
2018/07/16 Python
python 实现求解字符串集的最长公共前缀方法
2018/07/20 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
python中的decimal类型转换实例详解
2019/06/26 Python
python增加图像对比度的方法
2019/07/12 Python
python函数的万能参数传参详解
2019/07/26 Python
Python调用系统命令os.system()和os.popen()的实现
2020/12/31 Python
如何用Django处理gzip数据流
2021/01/29 Python
de Bijenkorf比利时官网:荷兰最知名的百货商店
2017/06/29 全球购物
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
2013年办公室秘书的个人自我鉴定
2013/10/24 职场文书
远程培训的心得体会
2014/09/01 职场文书
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript
ObjectMapper 如何忽略字段大小写
2021/06/29 Java/Android