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中实现字符串类型与字典类型相互转换的方法
Aug 18 Python
Django的HttpRequest和HttpResponse对象详解
Jan 26 Python
Pandas 同元素多列去重的实例
Jul 03 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
Jun 18 Python
如何用Python做一个微信机器人自动拉群
Jul 03 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
Sep 10 Python
python装饰器练习题及答案
Nov 01 Python
keras自定义回调函数查看训练的loss和accuracy方式
May 23 Python
Python‘==‘ 及 ‘is‘相关原理解析
Sep 05 Python
降低python版本的操作方法
Sep 11 Python
Pycharm github配置实现过程图解
Oct 13 Python
linux系统下pip升级报错的解决方法
Jan 31 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实现网上点歌(二)
2006/10/09 PHP
php桌面中心(一) 创建数据库
2007/03/11 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
四个常见html网页乱码问题及解决办法
2015/09/08 PHP
实例解析php的数据类型
2018/10/24 PHP
PHP封装的mysqli数据库操作类示例
2019/02/16 PHP
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
在js中单选框和复选框获取值的方式
2009/11/06 Javascript
jquery动态加载js三种方法实例
2013/08/03 Javascript
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
js实现的四级左侧网站分类菜单实例
2015/05/06 Javascript
Node.js实现数据推送
2016/04/14 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
2017/02/13 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
Bootstrap学习笔记之进度条、媒体对象实例详解
2017/03/09 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
2020/09/10 Javascript
[02:31]《DAC最前线》之选手酒店现场花絮
2015/01/30 DOTA
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
python获取指定网页上所有超链接的方法
2015/04/04 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
django启动uwsgi报错的解决方法
2018/04/08 Python
python通过ffmgep从视频中抽帧的方法
2018/12/05 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
提高EJB性能都有哪些技巧
2012/03/25 面试题
上课随便讲话检讨书
2014/09/12 职场文书
出生医学证明书
2014/09/15 职场文书
优秀小学生事迹材料
2014/12/26 职场文书
雾霾停课通知
2015/04/24 职场文书
农民工工资支付承诺书
2015/05/04 职场文书
学雷锋广播稿大全
2015/08/19 职场文书
同学聚会开幕词
2019/04/02 职场文书
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS