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中的字典使用分享
Jul 31 Python
Python中二维列表如何获取子区域元素的组成
Jan 19 Python
[原创]使用豆瓣提供的国内pypi源
Jul 02 Python
Python实现的递归神经网络简单示例
Aug 11 Python
Pycharm+Scrapy安装并且初始化项目的方法
Jan 15 Python
Python学习笔记之列表推导式实例分析
Aug 13 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
Aug 23 Python
python中下标和切片的使用方法解析
Aug 27 Python
浅谈django url请求与数据库连接池的共享问题
Aug 29 Python
使用matlab或python将txt文件转为excel表格
Nov 01 Python
python pandas.DataFrame.loc函数使用详解
Mar 26 Python
python 实现有道翻译功能
Feb 26 Python
什么是Python装饰器?如何定义和使用?
Apr 11 #Python
Python经常使用的一些内置函数
python处理json数据文件
Python几种酷炫的进度条的方式
Python通过loop.run_in_executor执行同步代码 同步变为异步
Python Pandas解析读写 CSV 文件
宝塔更新Python及Flask项目的部署
You might like
地球防卫队:陪着奥特曼打小怪兽的人类力量 那些经典队服
2020/03/08 日漫
IIS下配置Php+Mysql+zend的图文教程
2006/12/08 PHP
新浪SAE云平台下使用codeigniter的数据库配置
2014/06/12 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
2016/01/09 PHP
PHP自动生成缩略图函数的源码示例
2019/03/18 PHP
php新建文件的方法实例
2019/09/26 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
JS上传前预览图片实例
2013/03/25 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
RequireJS使用注意细节
2016/05/15 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
JavaScript中Number对象的toFixed() 方法详解
2016/09/02 Javascript
详解JavaScript中数组的reduce方法
2016/12/02 Javascript
Vue监听数组变化源码解析
2017/03/09 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
详解vuex的简单使用
2018/03/12 Javascript
Vue-cli assets SubDirectory及PublicPath区别详解
2020/08/18 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
[02:28]DOTA2 2017国际邀请赛小组赛回顾
2017/08/09 DOTA
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
Python 返回汉字的汉语拼音
2009/02/27 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
使用Python实现简单的服务器功能
2017/08/25 Python
python django使用haystack:全文检索的框架(实例讲解)
2017/09/27 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
Python3常见函数range()用法详解
2019/12/30 Python
Python实现猜年龄游戏代码实例
2020/03/25 Python
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
如何开启linux的ssh服务
2013/06/03 面试题
linux下进程间通信的方式
2013/01/23 面试题
酒店七夕情人节活动策划方案
2014/08/24 职场文书
机关干部个人对照检查材料思想汇报
2014/09/28 职场文书
现实表现材料范文
2014/12/23 职场文书
教代会闭幕词
2015/01/28 职场文书