Python的闭包的后期绑定问题
阅读一下代码他们的输出结果是什么?
def multi():return [lambda x : i*x for i in range(4)]
print([m(3) for m in multi()])
正确答案是[9,9,9,9],而不是[0,3,6,9]
产生的原因是Python的闭包的后期绑定导致的,这意味着在闭包中的变量是在内部函数被调用的时候被查找的,因为,最后函数被调用的时候,for循环已经完成, i 的值最后是3,因此每一个返回值的i都是3,所以最后的结果是[9,9,9,9]
上面的解释是我在网上找到的,我还不是特别的理解,我觉得是最后的推导式中是4个对同一个匿名函数的引用,函数的i修改只会以最后一个为准
也不知道这种理解对不对,如果你有更好的解释,恳请留言讲解!!!
也不知道这种理解对不对,如果你有更好的解释,恳请留言讲解!!!
也不知道这种理解对不对,如果你有更好的解释,恳请留言讲解!!!
Python的闭包的后期绑定问题相关推荐
- python闭包的延迟绑定_浅析Python的闭包和延迟绑定
def multipliers(): return [lambda x : i * x for i in range(4)] print [m(2) for m in multipliers()] 你 ...
- python中闭包不是立刻执行_一道神奇的Python面试题,你会吗?
无意间,看到这么一道Python面试题:以下代码将输出什么? def testFun(): temp = [lambda x : i*x for i in range(4)] return temp ...
- 【C++】多态(早期绑定、后期绑定)、抽象类(纯虚函数)、虚析构函数
我们都知道面向对象编程的三大特征是封装.继承.多态,今天我们就来说一下其中之一的多态. 概念: 多态: 多态字面意思就是多种形态,C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同 ...
- 使用Python,OpenCV进行Tesseract-OCR绑定及识别
使用Python,OpenCV进行Tesseract-OCR绑定及识别 1. 效果图 2. 安装Tesseract+Python"绑定"及识别 3. 源码 参考 上一篇博客介绍了W ...
- 学习C#中调用COM,后期绑定(以及对WinHttp COM对象的C#封装)
学习C#中调用COM,后期绑定(以及对WinHttp COM对象的C#封装) 学习C#中调用COM,后期绑定全部代码 开始学习C#了,没打算从语法一点一点的看起!所以上来就直接开始代码了!同时也和De ...
- python的闭包函数
python的闭包 首先python闭包的作用,一个是自带作用域,另一个是延迟计算. 闭包是装饰器的基础. 闭包的基本形式: -------------------------- def 外部函数名( ...
- 前期绑定 vs 后期绑定
即:变量的类型,在编译时就能够确定的就是前期绑定:变量的类型,在编译时无法准确确定,只有在运行时才能确定的变量类型,就是后期绑定. 转载于:https://www.cnblogs.com/JAVA-S ...
- C#前期绑定和后期绑定操作Excel-------实现简单打印功能
1,前期绑定 前期绑定需要引用Microsoft.Office.Interop.Excel.dll,代码有提示功能,编写方便,且代码量小.但是和具体的office版本密切相关,不同版本的Excel可能 ...
- php 后期绑定,PHP __DIR__评估运行时(后期绑定)?
是否有可能获得PHP文件的位置,在运行时进行评估?我正在寻找类似于魔术常量__DIR__的东西,但在运行时进行评估,作为后期绑定.与自我和静态相似的区别: __DIR__ ~ self ??? ~ s ...
最新文章
- 基于Vuejs+ElementUI的答案录入功能的一些总结
- wxWidgets:编写一个应用程序 - 添加一个按钮
- mysql数据库的事物日志在哪里_mysql数据库中事务日志的作用
- Know more about Cache Buffer Handle
- java基础 最重要的部分_Java基础(1)最基础的部分
- oracle11 处理器数,11G AWR中%Total CPU与%Busy CPU指标的疑问
- Js中fetch方法
- Chrome 实现前端页面自动刷新
- HDOJ 1755 - A Number Puzzle 排列数字凑同余,状态压缩DP
- udp广播收到重复包
- Vue设置页面的title
- jquery 获取 选中的radio的值
- IOS+Android 车牌识别SDK开发包——可以各种角度瞬间OCR识别车牌牌号
- Android中OKHttp的基本用法(Get、Post、上传文件等)
- FFMPEG+SDL播放音频流
- HTML初心自学记录(四)列表超链接
- 编写sdk提供给第三方使用(比如接口请求类)
- CorelDRAW 2020Mac、2021mac 版本正式回归 macOS免激活版
- c语言fread()函数
- 复盘--写在秋招之后
热门文章
- Python连接mysql基本操作
- 【转】Word 2010 取消拼写/语法检查,隐藏红线/绿线
- mac下配置android sdk环境 安装eclipse
- EBGP邻居抖动问题
- Linux+Tomcat建站笔记(JDK,Mysql,Vsftpd,Iptables等配置)
- Internet路由结构学习心得二:通告汇聚和具体路由影响AS入流量
- 使用cisco 2500路由器实现ADSL接入
- 无盘XP系统全套安装说明
- Fedora/RedHat安装Mysql8.0
- Fedora/RedHat上搭建MariaDB