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编写暴力破解FTP密码小工具
Nov 19 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
May 17 Python
12步入门Python中的decorator装饰器使用方法
Jun 20 Python
Python实现读取txt文件并画三维图简单代码示例
Dec 09 Python
Python实现识别手写数字 Python图片读入与处理
Mar 23 Python
python opencv 图像尺寸变换方法
Apr 02 Python
django项目搭建与Session使用详解
Oct 10 Python
对python dataframe逻辑取值的方法详解
Jan 30 Python
Python编写带选项的命令行程序方法
Aug 13 Python
使用Python来做一个屏幕录制工具的操作代码
Jan 18 Python
Python代码一键转Jar包及Java调用Python新姿势
Mar 10 Python
python上下文管理器异常问题解决方法
Feb 07 Python
什么是Python装饰器?如何定义和使用?
Apr 11 #Python
Python经常使用的一些内置函数
python处理json数据文件
Python几种酷炫的进度条的方式
Python通过loop.run_in_executor执行同步代码 同步变为异步
Python Pandas解析读写 CSV 文件
宝塔更新Python及Flask项目的部署
You might like
使用 MySQL Date/Time 类型
2008/03/26 PHP
php使用sql server验证连接数据库的方法
2014/12/25 PHP
基于php的CMS中展示文章类实例分析
2015/06/18 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
php实例化一个类的具体方法
2019/09/19 PHP
浅谈Javascript鼠标和滚轮事件
2012/06/27 Javascript
jquery对单选框,多选框,文本框等常见操作小结
2014/01/08 Javascript
json属性名为什么要双引号(个人猜测)
2014/07/31 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
用js编写的简单的计算器代码程序
2015/08/04 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
2016/08/05 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
NodeJS实现微信公众号关注后自动回复功能
2017/05/31 NodeJs
vue axios 二次封装的示例代码
2017/12/08 Javascript
详解vue-cli 接口代理配置
2017/12/13 Javascript
微信小程序实现折叠与展开文章功能
2018/06/12 Javascript
npm 常用命令详解(小结)
2019/01/17 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
在Vue中获取自定义属性方法:data-id的实例
2020/09/09 Javascript
wxPython学习之主框架实例
2014/09/28 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
2018/02/26 Python
python3读取csv和xlsx文件的实例
2018/06/22 Python
python3解析库BeautifulSoup4的安装配置与基本用法
2018/06/26 Python
python+os根据文件名自动生成文本
2019/03/21 Python
python网络编程之五子棋游戏
2020/05/14 Python
Python面向对象实现方法总结
2020/08/12 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
财务助理岗位职责
2013/11/10 职场文书
大连导游词
2015/02/12 职场文书
2015年司机工作总结
2015/04/23 职场文书
党内外群众意见范文
2015/06/02 职场文书
变长双向rnn的正确使用姿势教学
2021/05/31 Python
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
Golang 链表的学习和使用
2022/04/19 Golang