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实现的重启关机程序实例
Aug 21 Python
Python实现分割文件及合并文件的方法
Jul 10 Python
python正则分析nginx的访问日志
Jan 17 Python
python批量赋值操作实例
Oct 22 Python
python异步存储数据详解
Mar 19 Python
python频繁写入文件时提速的方法
Jun 26 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
Aug 17 Python
flask 实现上传图片并缩放作为头像的例子
Jan 09 Python
关于初始种子自动选取的区域生长实例(python+opencv)
Jan 16 Python
对pytorch的函数中的group参数的作用介绍
Feb 18 Python
Python 的 f-string 可以连接字符串与数字的原因解析
Feb 20 Python
Python异常类型以及处理方法汇总
Jun 05 Python
什么是Python装饰器?如何定义和使用?
Apr 11 #Python
Python经常使用的一些内置函数
python处理json数据文件
Python几种酷炫的进度条的方式
Python通过loop.run_in_executor执行同步代码 同步变为异步
Python Pandas解析读写 CSV 文件
宝塔更新Python及Flask项目的部署
You might like
apache和php之间协同工作的配置经验分享
2013/04/08 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
php实现简单的MVC框架实例
2015/09/23 PHP
php判断是否为ajax请求的方法
2016/11/29 PHP
JavaScript库 开发规则
2009/01/31 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
jQuery实现径向动画菜单效果
2015/07/17 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
RequireJS使用注意细节
2016/05/15 Javascript
Bootstrap布局方式详解
2016/05/27 Javascript
基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动
2017/02/08 Javascript
jquery实现数字输入框
2017/02/22 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
vue + el-form 实现的多层循环表单验证
2020/11/25 Vue.js
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
Python 爬虫的工具列表大全
2016/01/31 Python
Python中单、双下划线的区别总结
2017/12/01 Python
python爬取网页转换为PDF文件
2018/06/07 Python
python打印n位数“水仙花数”(实例代码)
2019/12/25 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
Python导入数值型Excel数据并生成矩阵操作
2020/06/09 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
2020/11/17 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
美国伊甸园兄弟种子公司:Eden Brothers
2018/07/01 全球购物
C++:memset ,memcpy和strcpy的根本区别
2013/04/27 面试题
公关关系专员的自我评价分享
2013/11/20 职场文书
最新茶叶店创业计划书
2014/01/14 职场文书
办理护照工作证明
2014/10/10 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书
python 模拟在天空中放风筝的示例代码
2021/04/21 Python
Python中with上下文管理协议的作用及用法
2022/03/18 Python