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学习笔记:字典的使用示例详解
Jun 13 Python
Python下的subprocess模块的入门指引
Apr 16 Python
Python的ORM框架中SQLAlchemy库的查询操作的教程
Apr 25 Python
Python的MongoDB模块PyMongo操作方法集锦
Jan 05 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
Dec 27 Python
简单了解Python write writelines区别
Feb 27 Python
Python插件机制实现详解
May 04 Python
numpy矩阵数值太多不能全部显示的解决
May 14 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
Jun 03 Python
PyCharm Community安装与配置的详细教程
Nov 24 Python
python自动化办公操作PPT的实现
Feb 05 Python
python神经网络学习 使用Keras进行简单分类
May 04 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
str_replace只替换一次字符串的方法
2013/04/09 PHP
PHP 二维数组根据某个字段排序的具体实现
2014/06/03 PHP
Codeigniter实现处理用户登录验证后的URL跳转
2014/06/12 PHP
PHP动态页生成静态页的3种常用方法
2014/11/13 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
js电信网通双线自动选择技巧
2008/11/18 Javascript
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
2010/05/06 Javascript
jquery 元素相对定位代码
2010/10/15 Javascript
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
使用jquery局部刷新(jquery.load)从数据库取出数据
2014/01/22 Javascript
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
jQuery hover事件简单实现同时绑定2个方法
2016/06/07 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
2016/06/07 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
2017/03/29 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
vue v-model动态生成详解
2018/06/30 Javascript
详解vue中axios的封装
2018/07/18 Javascript
使用vue完成微信公众号网页小记(推荐)
2019/04/28 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
小程序实现搜索框
2020/06/19 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
jquery简易手风琴插件的封装
2020/10/13 jQuery
Python SQLite3数据库日期与时间常见函数用法分析
2017/08/14 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
2018/05/10 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
巴西宠物商店:Cobasi
2019/04/19 全球购物
护士实习生自我鉴定范文
2013/12/10 职场文书
大学同学十年聚会感言
2014/02/21 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
新学期开学演讲稿
2014/05/24 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
小学数学继续教育研修日志
2015/11/13 职场文书
二维码条形码生成的JavaScript脚本库
2022/07/07 Javascript