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进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
Apr 25 Python
在Python3中初学者应会的一些基本的提升效率的小技巧
Mar 31 Python
Python学习小技巧之列表项的拼接
May 20 Python
Python2和Python3中print的用法示例总结
Oct 25 Python
python正则表达式及使用正则表达式的例子
Jan 22 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
Jan 24 Python
python之验证码生成(gvcode与captcha)
Jan 02 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
Mar 05 Python
Python的Tkinter点击按钮触发事件的例子
Jul 19 Python
tensorflow 获取checkpoint中的变量列表实例
Feb 11 Python
哪些是python中web开发框架
Jun 17 Python
Python jiaba库的使用详解
Nov 23 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
模仿OSO的论坛(二)
2006/10/09 PHP
php 格式化数字的时候注意数字的范围
2010/04/13 PHP
用PHP的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
Yii框架form表单用法实例
2014/12/04 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
使用vs code编辑调试php配置的方法
2019/01/29 PHP
php实现的生成排列算法示例
2019/07/25 PHP
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
js利用数组length属性清空和截短数组的小例子
2014/01/15 Javascript
JS常用字符串处理方法应用总结
2014/05/22 Javascript
基于iframe实现类似于ajax的页面无刷新
2014/05/31 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
常用原生JS兼容性写法汇总
2016/04/27 Javascript
JavaScript中获取HTML元素值的三种方法
2016/06/20 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
2017/02/14 Javascript
jQuery插件MovingBoxes实现左右滑动中间放大图片效果
2017/02/28 Javascript
js实现颜色阶梯渐变效果(Gradient算法)
2017/03/21 Javascript
jQuery制作input提示内容(兼容IE8以上)
2017/07/05 jQuery
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
Vue循环组件加validate多表单验证的实例
2018/09/18 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
2018/10/31 Javascript
用Vue编写抽象组件的方法
2019/05/06 Javascript
使用p5.js实现动态GIF图片临摹重现
2019/10/23 Javascript
jQuery 添加元素和删除元素的方法
2020/07/15 jQuery
详解JavaScript原型与原型链
2020/11/16 Javascript
python如何实现int函数的方法示例
2018/02/19 Python
python实现二分查找算法
2020/09/18 Python
土建资料员岗位职责
2014/01/04 职场文书
酒店营销策划方案
2014/02/07 职场文书
政治学求职信
2014/06/03 职场文书
地方课程教学计划
2015/01/19 职场文书
2016年助残日旅游活动总结
2016/04/01 职场文书
SQLServer权限之只开启创建表权限
2022/04/12 SQL Server