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获取豆瓣电影简介代码分享
Jan 16 Python
最基础的Python的socket编程入门教程
Apr 23 Python
利用python程序帮大家清理windows垃圾
Jan 15 Python
Python实现调用另一个路径下py文件中的函数方法总结
Jun 07 Python
在python中pandas读文件,有中文字符的方法
Dec 12 Python
使用django的ORM框架按月统计近一年内的数据方法
Jul 18 Python
python爬虫selenium和phantomJs使用方法解析
Aug 08 Python
Python lambda表达式filter、map、reduce函数用法解析
Sep 11 Python
python画微信表情符的实例代码
Oct 09 Python
python numpy 矩阵堆叠实例
Jan 17 Python
分享unittest单元测试框架中几种常用的用例加载方法
Dec 02 Python
Python可视化神器pyecharts之绘制箱形图
Jul 07 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
phpfans留言版用到的数据操作类和分页类
2007/01/04 PHP
探讨如何把session存入数据库
2013/06/07 PHP
php封装的smartyBC类完整实例
2016/10/19 PHP
PHP中->和=>的含义及使用示例解析
2020/08/06 PHP
php如何实现数据库的备份和恢复
2020/11/30 PHP
js表数据排序 sort table data
2009/02/18 Javascript
Javascript 面向对象(三)接口代码
2012/05/23 Javascript
jquery indexOf使用方法
2013/08/19 Javascript
javascript格式化指定日期对象的方法
2015/04/21 Javascript
javascript中in运算符用法分析
2015/04/28 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
JS实现网页上随机产生超链接地址的方法
2015/11/09 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
javascript阻止事件冒泡和浏览器的默认行为
2017/01/21 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
2018/01/30 Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
2019/07/10 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
Python实现堆排序的方法详解
2016/05/03 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
Python接口自动化判断元素原理解析
2020/02/24 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
Django数据统计功能count()的使用
2020/11/30 Python
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
师范应届毕业生自荐信
2013/11/18 职场文书
料理师求职信
2014/01/30 职场文书
周年庆促销方案
2014/03/15 职场文书
继承权公证书
2014/04/09 职场文书
委托书的写法
2014/08/30 职场文书
幼儿园辞职书
2015/02/26 职场文书
学校通报表扬范文
2015/05/04 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
简单谈谈Python面向对象的相关知识
2021/06/28 Python