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实现读写sqlite3数据库并将统计数据写入Excel的方法示例
Aug 07 Python
python解析html提取数据,并生成word文档实例解析
Jan 22 Python
Django如何配置mysql数据库
May 04 Python
基于python进行桶排序与基数排序的总结
May 29 Python
利用python对Excel中的特定数据提取并写入新表的方法
Jun 14 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
Nov 06 Python
Python实现E-Mail收集插件实例教程
Feb 06 Python
详解Python 4.0 预计推出的新功能
Jul 26 Python
python中for循环变量作用域及用法详解
Nov 05 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
Jan 13 Python
Python中无限循环需要什么条件
May 27 Python
python中什么是面向对象
Jun 11 Python
什么是Python装饰器?如何定义和使用?
Apr 11 #Python
Python经常使用的一些内置函数
python处理json数据文件
Python几种酷炫的进度条的方式
Python通过loop.run_in_executor执行同步代码 同步变为异步
Python Pandas解析读写 CSV 文件
宝塔更新Python及Flask项目的部署
You might like
PHP 读取大文件的X行到Y行内容的实现代码
2013/06/24 PHP
php实现爬取和分析知乎用户数据
2016/01/26 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
JS控制文本框textarea输入字数限制的方法
2013/06/17 Javascript
document.forms[].submit()使用介绍
2014/02/19 Javascript
用jquery.sortElements实现table排序
2014/05/04 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
AngularJS入门教程之Scope(作用域)
2016/07/27 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
浅谈Vue2.0父子组件间事件派发机制
2018/01/08 Javascript
使用vue中的v-for遍历二维数组的方法
2018/03/07 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
js中的深浅拷贝问题简析
2019/05/10 Javascript
关于vue表单提交防双/多击的例子
2019/10/31 Javascript
使用zrender.js绘制体温单效果
2019/10/31 Javascript
JavaScript实现烟花绽放动画效果
2020/08/04 Javascript
python实现微信远程控制电脑
2018/02/22 Python
python之pandas用法大全
2018/03/13 Python
总结python中pass的作用
2019/02/27 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
python3 selenium自动化 下拉框定位的例子
2019/08/23 Python
Python中join()函数多种操作代码实例
2020/01/13 Python
Python解析微信dat文件的方法
2020/11/30 Python
详解python 条件语句和while循环的实例代码
2020/12/28 Python
Pytorch1.5.1版本安装的方法步骤
2020/12/31 Python
服务宗旨标语
2014/07/01 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
Python time库的时间时钟处理
2021/05/02 Python
Ruby GDBM操作简介及数据存储原理
2022/04/19 Ruby