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标准库与第三方库详解
Jul 22 Python
详解Python中contextlib上下文管理模块的用法
Jun 28 Python
Python实现邮件的批量发送的示例代码
Jan 23 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
Dec 12 Python
使用python绘制二元函数图像的实例
Feb 12 Python
python实现关闭第三方窗口的方法
Jun 28 Python
django框架面向对象ORM模型继承用法实例分析
Jul 29 Python
Python列表的切片实例讲解
Aug 20 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
Mar 18 Python
如何基于python实现不邻接植花
May 01 Python
解决运行出现'dict' object has no attribute 'has_key'问题
Jul 15 Python
Golang Web 框架Iris安装部署
Aug 14 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
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
php 三元运算符实例详细介绍
2016/12/15 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
2019/09/29 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
js中this的用法实例分析
2015/01/10 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
2015/01/28 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
2015/11/17 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
Nodejs下用submit提交表单提示cannot post错误的解决方法
2016/11/21 NodeJs
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
2017/08/21 Javascript
微信小程序实现tab和swiper切换结合效果
2020/07/17 Javascript
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
微信小程序中时间戳和日期的相互转换问题
2018/07/09 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
nodejs实现聊天机器人功能
2019/09/19 NodeJs
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
[01:04:09]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第二场 2月2日
2021/03/11 DOTA
利用python爬取斗鱼app中照片方法实例
2017/12/03 Python
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
美国转售二手商品的电子商务平台:BLINQ
2018/12/13 全球购物
毕业生就业自荐书
2013/12/15 职场文书
预备党员入党自我评价范文
2014/03/10 职场文书
商业融资计划书
2014/04/29 职场文书
党员承诺践诺书
2014/05/20 职场文书
我的中国心演讲稿
2014/09/04 职场文书
六一领导慰问欢迎词
2015/01/26 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
2015年度企业工作总结
2015/05/21 职场文书
就业指导讲座心得体会
2016/01/15 职场文书