Python基础之函数嵌套知识总结


Posted in Python onMay 23, 2021

内部/内嵌函数

1、定义:在一个函数的函数体内使用关键字def关键字定义一个新的函数,这个新的函数就叫做内部/内嵌函数。
2、注意点:内部函数的整个函数体都在外部函数的作用域内,如果在内部函数内没有对外部函数变量的引用,即访问,那么除了在外部函数体内,在其他任何地方都不能对内部函数进行调用。
3、内部函数可以访问外部函数的变量,但是不能对外部函数中的变量进行使用,即不能试图改变外部函数中的变量。但可以使用nonlocal关键字修饰内部函数的变量,修饰后内部函数就可以访问并使用外部函数的变量。?1

def out_func(out_name):
    def in_func(in_name):
        print(out_name.title() + " " + in_name.title())  # 内部函数可以访问外部函数的变量,但不能使用不能改变
    print("this is user()")
    return in_func # 返回的是内部函数对象,也就是内部函数地址。

a = out_func("tom")
print(a)
print(type(a))

输出结果:

Python基础之函数嵌套知识总结

通过输出内容我们可以看到,调用out_func函数后,返回的内容是一个函数地址,类型是一个函数

def out_func(out_name):
    def in_func(in_name):
        print(out_name.title() + " " + in_name.title())  # 内部函数可以访问外部函数的变量,但不能使用不能改变
    print("this is user()")
    return in_func # 返回的是内部函数对象,也就是内部函数地址。

a = out_func("tom") # 返回的是in_func这个函数对象
a("jerry") # 相当于in_func("jerry")

out_func("tom")("jerry")

输出结果:

Python基础之函数嵌套知识总结

a = out_func("tom")语句是调用外部函数,执行后变量a就相当于in_funca("jerry")语句相当于in_func("jerry")

out_func("tom")("jerry") 语句和a = out_func("tom")a("jerry")结果是一样的。

def out_func(out_name):
    def in_func(in_name):
        print(out_name.title() + " " + in_name.title())  # 内部函数可以访问外部函数的变量,但不能使用不能改变
    print("this is user()")
    return in_func # 返回的是内部函数对象,也就是内部函数地址。
    
in_func("test")  # 局部变量 不能在外部函数外部使用

输出结果:

Python基础之函数嵌套知识总结

内部函数也算是外部函数的一个局部变量,所以在外部函数外部,它也是没有作用域的。

Tip:

title():将调用其的字符串首字母大写

到此这篇关于Python基础之函数嵌套知识总结的文章就介绍到这了,更多相关Python函数嵌套内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
Aug 10 Python
用Python将IP地址在整型和字符串之间轻松转换
Mar 22 Python
高效测试用例组织算法pairwise之Python实现方法
Jul 19 Python
python遍历序列enumerate函数浅析
Oct 17 Python
Python实现拷贝/删除文件夹的方法详解
Aug 29 Python
python使用numpy读取、保存txt数据的实例
Oct 14 Python
python scp 批量同步文件的实现方法
Jan 03 Python
python 通过可变参数计算n个数的乘积方法
Jun 13 Python
python opencv捕获摄像头并显示内容的实现
Jul 11 Python
python 的numpy库中的mean()函数用法介绍
Mar 03 Python
使用npy转image图像并保存的实例
Jul 01 Python
如何基于Python Matplotlib实现网格动画
Jul 20 Python
利用python Pandas实现批量拆分Excel与合并Excel
May 23 #Python
Python基础之元编程知识总结
May 23 #Python
Python利用folium实现地图可视化
python爬虫之selenium库的安装及使用教程
教你利用python实现企业微信发送消息
python基础之文件处理知识总结
May 23 #Python
Python绘制地图神器folium的新人入门指南
You might like
队列在编程中的实际应用(php)
2010/09/04 PHP
php小偷相关截取函数备忘
2010/11/28 PHP
php实现文件下载更能介绍
2012/11/23 PHP
php封装单文件上传到数据库(路径)
2017/10/15 PHP
阻止子元素继承父元素事件具体思路及实现
2013/05/02 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
一个JavaScript去除字符串末尾的空白实例代码
2014/09/22 Javascript
JQuery中serialize()用法实例分析
2015/02/06 Javascript
基于jquery实现省市联动特效
2015/12/17 Javascript
jQuery的事件预绑定
2016/12/05 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
2017/01/10 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
2017/06/12 jQuery
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
Angularjs 根据一个select的值去设置另一个select的值方法
2018/08/13 Javascript
[01:14:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Orenda
2014/05/22 DOTA
[33:23]VG vs Pain 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[46:14]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python连接mysql数据库示例(做增删改操作)
2013/12/31 Python
利用python实现数据分析
2017/01/11 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
python实现简单flappy bird
2018/12/24 Python
Python django搭建layui提交表单,表格,图标的实例
2019/11/18 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
python使用Thread的setDaemon启动后台线程教程
2020/04/25 Python
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
如何实现jdbc性能优化
2012/07/30 面试题
高中的职业生涯规划书
2013/12/28 职场文书
物流合作计划书
2014/01/10 职场文书
毕业生见习报告总结
2014/11/08 职场文书
学生会招新宣传语
2015/07/13 职场文书
婚宴新娘致辞
2015/07/28 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书
教你用python实现12306余票查询
2021/06/30 Python