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实现哈希表
Feb 07 Python
Python中的自定义函数学习笔记
Sep 23 Python
python实现自动登录人人网并采集信息的方法
Jun 28 Python
Numpy中转置transpose、T和swapaxes的实例讲解
Apr 17 Python
Python设计模式之适配器模式原理与用法详解
Jan 15 Python
用Python配平化学方程式的方法
Jul 20 Python
在python Numpy中求向量和矩阵的范数实例
Aug 26 Python
python hash每次调用结果不同的原因
Nov 21 Python
python turtle 绘制太极图的实例
Dec 18 Python
Django实现后台上传并显示图片功能
May 29 Python
python 批量下载bilibili视频的gui程序
Nov 20 Python
pytorch 梯度NAN异常值的解决方案
Jun 05 Python
什么是Python装饰器?如何定义和使用?
Apr 11 #Python
Python经常使用的一些内置函数
python处理json数据文件
Python几种酷炫的进度条的方式
Python通过loop.run_in_executor执行同步代码 同步变为异步
Python Pandas解析读写 CSV 文件
宝塔更新Python及Flask项目的部署
You might like
桌面中心(三)修改数据库
2006/10/09 PHP
php获取文件夹路径内的图片以及分页显示示例
2014/03/11 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
用JavaScript获取网页中的js、css、Flash等文件
2006/12/20 Javascript
对google个性主页的拖拽效果的js的完整注释[转]
2007/04/10 Javascript
JavaScript 常用函数库详解
2009/10/21 Javascript
修改jquery里的dialog对话框插件为框架页(iframe) 的方法
2010/09/14 Javascript
JavaScript 原型链学习总结
2010/10/29 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
Javascript中setTimeOut和setInterval的定时器用法
2015/06/12 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
手机浏览器 后退按钮强制刷新页面方法总结
2016/10/09 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
tangram.js库实现js类的方式实例分析
2018/01/06 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
layui实现根据table数据判断按钮显示情况的方法
2019/09/26 Javascript
vue在路由中验证token是否存在的简单实现
2019/11/11 Javascript
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
[41:52]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第二场 2月22日
2021/03/11 DOTA
python中MySQLdb模块用法实例
2014/11/10 Python
Python多线程编程简单介绍
2015/04/13 Python
Python实现的Excel文件读写类
2015/07/30 Python
Python Nose框架编写测试用例方法
2017/10/26 Python
Python中getpass模块无回显输入源码解析
2018/01/11 Python
python使用selenium实现批量文件下载
2019/03/11 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
Python3操作MongoDB增册改查等方法详解
2020/02/10 Python
解决python3插入mysql时内容带有引号的问题
2020/03/02 Python
详解Pandas 处理缺失值指令大全
2020/07/30 Python
一款简洁的纯css3代码实现的动画导航
2014/10/31 HTML / CSS
如何利用cmp命令比较文件
2016/04/11 面试题
广告语设计及教案
2014/03/21 职场文书
好好学习保证书
2015/02/26 职场文书
公司新员工欢迎词
2015/09/30 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书