Python闭包的定义和使用方法


Posted in Python onApril 11, 2022

1.闭包的定义和使用

当返回的内部函数使用了外部函数的变量就形成了闭包
闭包可以对外部函数的变量进行保存,还可以提高代码的可重用性

实现闭包的标准格式:

  • 1.函数嵌套
  • 2.内部函数使用外部函数的变量或参数
  • 3.外部函数返回了内部函数
'''
当返回的内部函数使用了外部函数的变量就形成了闭包
闭包可以对外部函数的变量进行保存,还可以提高代码的可重用性
实现闭包的标准格式:
    1.函数嵌套
    2.内部函数使用外部函数的变量或参数
    3.外部函数返回了内部函数
'''
 
# 定义一个闭包
def outer():    # 外部函数
    n=1
    def inner():    # 内部函数
        print(n)
    # 外函数返回内函数的引用(不用带括号哈)
    return inner
 
outer() # 调用外函数不会执行内函数
# inner() # 不能直接调用内函数
ret=outer() # 把内函数的引用给ret
print(ret)
ret()
 
# 闭包的使用
def person(name):
    def say(msg):
        print(f'{name} say:  {msg}')
    return say
 
tom=person('Tom')
rose=person('Rose')
tom('Hello')
rose('World')

2.闭包内函数修改外函数定义的变量(加nonlocal)

def outer():
    n=1
    def inner():
        nonlocal n  # 不加会报错,列表、字典、元祖不用加
        n=n+10
        print(n)
    print(n)    # 输出1
    return inner
 
fun=outer()
fun()   # 输出11
fun()   # 输出21

到此这篇关于Python闭包的使用方法的文章就介绍到这了,更多相关Python闭包 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python和pyqt实现360的CLable控件
Feb 21 Python
python让图片按照exif信息里的创建时间进行排序的方法
Mar 16 Python
Python中字典(dict)合并的四种方法总结
Aug 10 Python
python的mysqldb安装步骤详解
Aug 14 Python
python xlsxwriter创建excel图表的方法
Jun 11 Python
通过python顺序修改文件名字的方法
Jul 11 Python
对python dataframe逻辑取值的方法详解
Jan 30 Python
Python两个字典键同值相加的几种方法
Mar 05 Python
PYQT5实现控制台显示功能的方法
Jun 25 Python
基于python3监控服务器状态进行邮件报警
Oct 19 Python
Python基于WordCloud制作词云图
Nov 29 Python
python 爬取B站原视频的实例代码
Sep 09 Python
什么是Python装饰器?如何定义和使用?
Apr 11 #Python
Python经常使用的一些内置函数
python处理json数据文件
Python几种酷炫的进度条的方式
Python通过loop.run_in_executor执行同步代码 同步变为异步
Python Pandas解析读写 CSV 文件
宝塔更新Python及Flask项目的部署
You might like
在DC的漫画和电影中,蝙蝠侠的宿敌,小丑的真名是什么?
2020/04/09 欧美动漫
php UTF-8、Unicode和BOM问题
2010/05/18 PHP
php 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
详细解读PHP的Yii框架中登陆功能的实现
2015/08/21 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
Jquery 弹出层插件实现代码
2009/10/24 Javascript
检测jQuery.js是否已加载的判断代码
2011/05/20 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
vue.js 表格分页ajax 异步加载数据
2016/10/18 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
2016/10/26 Javascript
webpack写jquery插件的环境配置
2017/12/21 jQuery
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
layui多图上传实现删除功能的例子
2019/09/23 Javascript
vue中v-model对select的绑定操作
2020/08/31 Javascript
Python collections模块实例讲解
2014/04/07 Python
Python中多线程及程序锁浅析
2015/01/21 Python
Python实现控制台输入密码的方法
2015/05/29 Python
Python中的条件判断语句与循环语句用法小结
2016/03/21 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
Python Spyder 调出缩进对齐线的操作
2021/02/26 Python
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
Aerosoles爱柔仕官网:美国舒软女鞋品牌
2017/07/17 全球购物
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
单位创先争优活动方案
2014/01/26 职场文书
高中物理教学反思
2014/02/08 职场文书
网络管理员岗位职责
2014/03/17 职场文书
个人承诺书怎么写
2014/05/24 职场文书
经济贸易专业自荐信
2014/06/11 职场文书
党员四风问题个人对照检查材料
2014/10/26 职场文书
大学生实习介绍信
2015/05/05 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书