iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python 闭包中引用的变量值变更问题
  • 897
分享到

python 闭包中引用的变量值变更问题

包中变量值python 2023-01-31 02:01:48 897人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

python的闭包当内层函数引用外层函数的局部变量时,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。如下:def count():     fs = []     for i in range(1, 4):         de

python闭包当内层函数引用外层函数的局部变量时,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变

如下:

def count():
    fs = []
    for i in range(1, 4):
        def lazy_count(j):
            def cou():
                return j*j
            return cou
        r = lazy_count(i)
        fs.append(r)
    return fs

f1, f2, f3 = count()
print f1(), f2(), f3()

如果以上代码写成如下:

def count():
    fs = []
    for i in range(1, 4):
        def f():
             return i*i
        fs.append(f)
    return fs

f1, f2, f3 = count()

最终得到的f1, f2, f3就都是9,是因为这行:

f1, f2, f3 = count()

里得到的count()函数中的f()函数中的i已经迭代至3了,最终得出的结果只能是9 9 9

而刚开始给出的代码中f1,f2,f3其实得到的是一个序列而已,而计算这个序列中每个元素时引用的闭包中的外层函数中的变量随着迭代变更,从1至3,并且同时计算出该次迭代所得的元素值append进序列返回,顾最终结果为1 4 9

--结束END--

本文标题: python 闭包中引用的变量值变更问题

本文链接: https://www.lsjlt.com/news/186418.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python 闭包中引用的变量值变更问题
    python的闭包当内层函数引用外层函数的局部变量时,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。如下:def count():     fs = []     for i in range(1, 4):         de...
    99+
    2023-01-31
    包中 变量值 python
  • Python编程中闭包的变量作用域问题解析
    目录闭包闭包中的变量闭包 ​ 在我们使用返回函数的时候,由于我们在一个函数中需要返回另一个函数,因此,我们在这个函数中就需要重新定义一个函数。而这样,就造成了我们的函数嵌...
    99+
    2024-04-02
  • 闭包如何解决jQuery中AJAX的外部变量问题
    这篇文章主要为大家展示了“闭包如何解决jQuery中AJAX的外部变量问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“闭包如何解决jQuery中AJAX的外部...
    99+
    2024-04-02
  • go语言中闭包共享变量问题示例分析
    这篇文章将为大家详细讲解有关go语言中闭包共享变量问题示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。直接看代码和注释:package mainimport ( &nb...
    99+
    2023-06-14
  • Python中的变量赋值
    目录1变量、对象、引用2对象的垃圾回收机制3变量所指向的对象不同会有何不同?引言: Python中的变量在使用中很流畅,可以不关注类型,任意赋值,对于开发来说效率得到了提升,但若不了...
    99+
    2024-04-02
  • python多进程,全局变量未更新问题
    问题:子进程全局变量没有按照预想的更新,导致数据没有写入磁盘。进程池必须在if __name__ == '__main__'下面使用复现:见实验代码环境:centos7, python3.7原因: 子进程的__name__属性值不是'_...
    99+
    2023-01-31
    进程 全局变量 python
  • C#中怎么利用闭包捕获变量
    C#中怎么利用闭包捕获变量,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。简单来讲,闭包允许你将一些行为封装,将它像一个对象一样传来递去,而且它依然能够访问到原来...
    99+
    2023-06-17
  • Python中的变量怎么赋值
    这篇文章主要讲解了“Python中的变量怎么赋值”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中的变量怎么赋值”吧!1 Python变量概述变量,英文叫做 variable。在《...
    99+
    2023-06-22
  • Python中闭包和自由变量的使用与注意事项
    目录1.定义2.nonlocal 关键字3.注意事项4.使用场景总结1.定义 在函数内部再定义一个函数,并且这个函数用到了外部函数的变量(LEGB),最后返回新建函数的函数名索引,那...
    99+
    2024-04-02
  • php变量的引用赋值使用方法
    这篇文章主要讲解了“php变量的引用赋值使用方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php变量的引用赋值使用方法”吧!说明引用赋值,使用这种赋值方法意味着新的变量引用原始变量,改变...
    99+
    2023-06-20
  • JavaScript的闭包与变量作用域介绍
    这篇文章主要讲解了“JavaScript的闭包与变量作用域介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript的闭包与变量作用域介绍”吧!...
    99+
    2024-04-02
  • 【6】装饰器、闭包、偏函数、变量作用域问
            【一】、装饰器思想 装饰器是其实想增加一个函数的功能,但是又不想变动原来函数的代码,就用装饰器。 比如:我们用别人的一个函数,又不是很满意,所以用装饰器装饰一下即可。   def fun1(): print(...
    99+
    2023-01-30
    变量 函数 作用
  • python中变量的声明和赋值
    1、什么是变量?    变量:值会发生变化的的量,与常量相对.2、python支持的变量数据类型:    Python有五个标准的数据类型:1. 数字    2.字符串    3.元组    4.列表    5.字典3、python中的变...
    99+
    2023-01-31
    赋值 变量 声明
  • PHP中的全局变量值如何更改
    这篇文章主要介绍了PHP中的全局变量值如何更改的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP中的全局变量值如何更改文章都会有所收获,下面我们一起来看看吧。什么是全局变量在 PHP 中,全局变量是指在函数之...
    99+
    2023-07-05
  • Python tkinter中label控件动态改变值问题
    目录Python tkinter中label控件动态改变值Python tkinter下拉日历控件总结Python tkinter中label控件动态改变值 最近在用tkinter做...
    99+
    2023-01-31
    Python tkinter tkinter label label控件动态改变值
  • Golang函数的包级别变量引用方法
    Golang是一种静态类型的编程语言,其在实现高性能并发编程方面表现出了其独特的优势。其中Golang的包级别变量是其强大的编程特性之一。在Golang中,包级别变量是一个在包级别被定义的变量,它可被该包内所有的源文件访问,并且在程序运行时...
    99+
    2023-05-18
    函数 Golang 包级别变量
  • Python进阶学习修改闭包内使用的外部变量
    目录修改闭包内使用的外部变量错误示例:小结闭包与闭包中修改外部变量修改外部函数的变量修改闭包内使用的外部变量 错误示例: # 定义一个外部函数 def func_out(num1):...
    99+
    2024-04-02
  • javascript中变量提升和闭包的示例分析
    这篇文章主要介绍了javascript中变量提升和闭包的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我们先来看一个题目:<s...
    99+
    2024-04-02
  • php不使用中间变量如何互换两变量的值
    这篇文章主要介绍“php不使用中间变量如何互换两变量的值”,在日常操作中,相信很多人在php不使用中间变量如何互换两变量的值问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php不使用中间变量如何互换两变量的值...
    99+
    2023-07-05
  • php不使用中间变量怎么互换两变量的值
    互换方法:1、利用PHP提供的字符串分割函数explode()来实现,语法“$b=explode("|",$a."|".$b);$a=$b[1];$b=$b[0];”;2、利用赋值运算和加减运算来实现...
    99+
    2023-05-14
    php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作