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加pyGame实现的简单拼图游戏实例
May 15 Python
python通过加号运算符操作列表的方法
Jul 28 Python
Python实现模拟时钟代码推荐
Nov 08 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
Sep 13 Python
不知道这5种下划线的含义,你就不算真的会Python!
Oct 09 Python
python实现Excel文件转换为TXT文件
Apr 28 Python
在python中利用try..except来代替if..else的用法
Dec 19 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
Mar 02 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
Mar 09 Python
python 安装impala包步骤
Mar 28 Python
基于python制作简易版学生信息管理系统
Apr 20 Python
LeetCode189轮转数组python示例
Aug 05 Python
什么是Python装饰器?如何定义和使用?
Apr 11 #Python
Python经常使用的一些内置函数
python处理json数据文件
Python几种酷炫的进度条的方式
Python通过loop.run_in_executor执行同步代码 同步变为异步
Python Pandas解析读写 CSV 文件
宝塔更新Python及Flask项目的部署
You might like
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
php中mkdir()函数的权限问题分析
2016/09/24 PHP
js的event详解。
2006/09/06 Javascript
JS 建立对象的方法
2007/04/21 Javascript
js动态设置div的值下例子
2013/10/29 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
jQuery自定义滚动条完整实例
2016/01/08 Javascript
如何通过js实现图片预览功能【附实例代码】
2016/03/30 Javascript
jquery表单验证实例仿Toast提示效果
2017/03/03 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
vue修改vue项目运行端口号的方法
2017/08/04 Javascript
Vue2 监听属性改变watch的实例代码
2018/08/27 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
JS实现电话号码的字母组合算法示例
2019/02/26 Javascript
python保存字符串到文件的方法
2015/07/01 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
numpy添加新的维度:newaxis的方法
2018/08/02 Python
Numpy截取指定范围内的数据方法
2018/11/14 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
python3.7.3版本和django2.2.3版本是否可以兼容
2020/09/01 Python
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
Agoda香港:全球特价酒店预订
2017/05/07 全球购物
String、StringBuffer、StringBuilder有区别
2015/09/18 面试题
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
集体婚礼证婚词
2014/01/13 职场文书
《云房子》教学反思
2014/04/20 职场文书
网络编辑求职信
2014/04/30 职场文书
好书伴我成长演讲稿
2014/05/14 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
先进典型发言材料
2014/12/30 职场文书
酒店收银员岗位职责
2015/04/07 职场文书
2016年社区服务活动总结
2016/04/06 职场文书
个人道歉信大全
2019/04/11 职场文书
创业计划书之奶茶店开店方案范本!
2019/08/06 职场文书
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers