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的类实例属性访问规则探讨
Jan 30 Python
Python的函数的一些高阶特性
Apr 27 Python
Python制作简易注册登录系统
Dec 15 Python
Python方法的延迟加载的示例代码
Dec 18 Python
Python 使用matplotlib模块模拟掷骰子
Aug 08 Python
详解numpy矩阵的创建与数据类型
Oct 18 Python
Ubuntu16.04安装python3.6.5步骤详解
Jan 10 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
Feb 06 Python
python模拟斗地主发牌
Apr 22 Python
详解java调用python的几种用法(看这篇就够了)
Dec 10 Python
Python用requests库爬取返回为空的解决办法
Feb 21 Python
python获取带有返回值的多线程
May 02 Python
什么是Python装饰器?如何定义和使用?
Apr 11 #Python
Python经常使用的一些内置函数
python处理json数据文件
Python几种酷炫的进度条的方式
Python通过loop.run_in_executor执行同步代码 同步变为异步
Python Pandas解析读写 CSV 文件
宝塔更新Python及Flask项目的部署
You might like
PHP异步调用socket实现代码
2012/01/12 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
2018/05/23 PHP
js string 转 int 注意的问题小结
2013/08/15 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
使用jQuery在对象中缓存选择器的简单方法
2015/06/30 Javascript
JS+CSS实现简易实用的滑动门菜单效果
2015/09/18 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
JS实现评价的星星功能
2017/08/20 Javascript
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
2018/09/13 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
laypage.js分页插件使用方法详解
2019/07/27 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
Python中的文件和目录操作实现代码
2011/03/13 Python
Python3读取文件常用方法实例分析
2015/05/22 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
2017/06/07 Python
Python实现决策树C4.5算法的示例
2018/05/30 Python
Python实现使用request模块下载图片demo示例
2019/05/24 Python
python中 * 的用法详解
2019/07/10 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
Python HTMLTestRunner如何下载生成报告
2020/09/04 Python
详解css3中 text-fill-color属性
2019/07/08 HTML / CSS
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
四年的个人工作自我评价
2013/12/10 职场文书
三年级语文教学反思
2014/02/01 职场文书
职业生涯规划书范文
2014/03/10 职场文书
养牛场项目建议书
2014/05/13 职场文书
责任胜于能力演讲稿
2014/05/20 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
客户答谢会致辞
2015/01/20 职场文书
复试通知单模板
2015/04/24 职场文书
redis哨兵常用命令和监控示例详解
2021/05/27 Redis