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实现从url中提取域名的几种方法
Sep 26 Python
Python网页解析利器BeautifulSoup安装使用介绍
Mar 17 Python
Python黑帽编程 3.4 跨越VLAN详解
Sep 28 Python
Python自定义线程池实现方法分析
Feb 07 Python
Python自定义装饰器原理与用法实例分析
Jul 16 Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
Jun 04 Python
在python中利用numpy求解多项式以及多项式拟合的方法
Jul 03 Python
Python Pandas中根据列的值选取多行数据
Jul 08 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
Oct 28 Python
Python自动化完成tb喵币任务的操作方法
Oct 30 Python
python paramiko远程服务器终端操作过程解析
Dec 14 Python
Python 如何利用ffmpeg 处理视频素材
Nov 27 Python
什么是Python装饰器?如何定义和使用?
Apr 11 #Python
Python经常使用的一些内置函数
python处理json数据文件
Python几种酷炫的进度条的方式
Python通过loop.run_in_executor执行同步代码 同步变为异步
Python Pandas解析读写 CSV 文件
宝塔更新Python及Flask项目的部署
You might like
使用 MySQL 开始 PHP 会话
2006/12/21 PHP
php下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
php去除字符串中空字符的常用方法小结
2015/03/17 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
2010/05/22 Javascript
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
用js小类库获取浏览器的高度和宽度信息
2012/01/15 Javascript
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
node.js实现多图片上传实例
2014/06/03 Javascript
js进行表单验证实例分析
2015/02/10 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
2015/03/18 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
微信小程序入口场景的问题集合与相关解决方法
2019/06/26 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
2020/09/05 Javascript
Python版的文曲星猜数字游戏代码
2013/09/02 Python
简单了解Django模板的使用
2017/12/20 Python
python函数的万能参数传参详解
2019/07/26 Python
使用python快速在局域网内搭建http传输文件服务的方法
2019/11/14 Python
六种酷炫Python运行进度条效果的实现代码
2020/07/17 Python
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
某公司.Net方向面试题
2014/04/24 面试题
银行自荐信范文
2013/10/07 职场文书
社区消防工作实施方案
2014/03/21 职场文书
护士节活动总结
2014/08/29 职场文书
钱学森观后感
2015/06/04 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书
催款函范本大全
2015/06/24 职场文书
毕业酒会致辞
2015/07/29 职场文书
2015国庆节感想
2015/08/04 职场文书
Redis 配置文件重要属性的具体使用
2021/05/20 Redis
python实现简单的井字棋
2021/05/26 Python
解决xampp安装后Apache无法启动
2022/03/21 Servers
vue3不同环境下实现配置代理
2022/05/25 Vue.js