数据是列表理解的根源;它是传递给已创建的嵌套作用域的一个参数.

列表解析中的所有内容都在单独的范围内运行(作为一个函数,基本上),除了用于最左边for循环的iterable之外.你可以在字节码中看到这一点:

>>> def foo():

... return [i for i in data]

...

>>> dis.dis(foo)

2 0 LOAD_CONST 1 ( at 0x105390390, file "", line 2>)

3 LOAD_CONST 2 ('foo..')

6 MAKE_FUNCTION 0

9 LOAD_GLOBAL 0 (data)

12 GET_ITER

13 CALL_FUNCTION 1 (1 positional, 0 keyword pair)

16 RETURN_VALUE

< listcomp>代码对象像一个函数一样调用,iter(data)作为参数传入(CALL_FUNCTION被执行了1个位置参数,GET_ITER结果).

< listcomp>代码对象寻找一个参数:

>>> dis.dis(foo.__code__.co_consts[1])

2 0 BUILD_LIST 0

3 LOAD_FAST 0 (.0)

>> 6 FOR_ITER 12 (to 21)

9 STORE_FAST 1 (i)

12 LOAD_FAST 1 (i)

15 LIST_APPEND 2

18 JUMP_ABSOLUTE 6

>> 21 RETURN_VALUE

LOAD_FAST调用是指传入的第一个也是唯一的位置参数;它在这里是未命名的,因为从来没有一个函数定义给它一个名字.

在列表理解中使用的任何附加名称(或者set或者dict的解释,或者生成器表​​达式)就是本地,闭包或全局,而不是参数.

python怎么定义一个变量为空列表_python – 为什么一个类变量没有在列表理解中定义,但另一个是?...相关推荐

  1. 判断变量定义和变量为空问题

    变量定义和变量为空问题:jrhmpt01:/root# cat x1.pl my $xx=""; if (defined($xx)){print "111111111\n ...

  2. python输入一个三位数、输出它的逆序数值_c语言 从键盘输入一个三位数,输出该数的逆序数。c语言中从键盘输入一个三位整数...

    c语言 从键盘输入一个三位数,输出该数的逆序数. c语言中从键盘输入一个三位整数 www.zhiqu.org     时间: 2020-12-08 c语言中从键盘输入一个三位数,输出该数的逆序数,可以 ...

  3. java中定义常量必须使用的关键字是_可以单独使用final关键字在Java中定义常量吗?...

    常量变量是其值固定的变量,程序中仅存在一个副本.声明常量变量并为其分配值后,就无法在整个程序中再次更改其值. 与其他语言不同,java不直接支持常量.但是,您仍然可以通过声明变量static和fina ...

  4. python定义字典列表_Python基础语法(四)—列表、元组、字典、集合、字符串

    列表 基本概念列表是有序的元素集合,所有元素放在一对中括号中,用逗号隔开,没有长度限制: 列表索引值以0为开始值,-1为从未尾的开始位置. 列表可以使用+操作符进行拼接,使用*表示重复. 当列表元素增 ...

  5. python.集合转列表_Python基础数据类型:元组、列表、字典、集合

    你好,我是goldsunC. 让我们一起进步吧! 元组.列表.字典.集合 元组和列表是Python语言中非常重要的一部分内容,它们是Python中除了字符串以外的另两种序列结构,几乎在任何地方都少不了 ...

  6. format函数python生成列表_python 全栈开发,Day14(列表推导式,生成器表达式,内置函数)...

    一.列表生成式 生成1-100的列表 li = [] for i in range(1,101): li.append(i) print(li) 执行输出: [1,2,3...] 生成python1期 ...

  7. 移位 c语言一个变量存储两个值,【杭州C  培训】C语言中基础小问题总结

    1.printf格式输出函数 如果格式控制说明项数多于输出表列个数,则会输出错误数据: 如果输出表列个数多于格式控制说明数,则多出数不被输出. %md,m指的是输出字段的宽度.如果输出字段位数小于m, ...

  8. python 类装饰器和函数装饰器区别_python进阶之装饰器之4在类中定义装饰器,将装饰器定义为类,两者的区别与联系...

    # 把装饰器定义为类 # 定义中需要实现__call__(),__get__() 方法 import types from functools import wraps class Profiled: ...

  9. mysql5.5索引如何定义_MySQL5.5索引数在InnoDB引擎内与索引数在mysql中定义的数量是不一致问题-阿里云开发者社区...

    在查看MySQL错误日志的时候发现这样的错误,如下: 160322 21:42:59 [ERROR] Table baby/baby_order contains 12 indexes inside ...

最新文章

  1. 码云创建maven工程
  2. mysql中的if [not] exists
  3. ML《集成学习(二)Boosting之Adaboosting》
  4. ERROR org.hibernate.proxy.pojo.javassist.JavassistProxyFactory - HHH000142:错误
  5. Java Web学习总结(43)—— Restful API 版本控制
  6. kepserver 6.5_油价下调!加满一箱油少花6.5元……
  7. 【Spring第二篇】IOC:控制反转
  8. 物体检测中的mAP含义
  9. 输出200以内所有素数(python)
  10. 数字万用表常用功能使用
  11. 说说Stack Overflow和Quora
  12. 【听说隔壁老王开始学编程了?】
  13. linux开源游戏_适用于Linux的5个开源策略和模拟游戏
  14. [转载]100本名著浓缩成的100句话
  15. nginx signal 之 quit
  16. “第三方支付”盈利模式
  17. 安娜Anna:世界最快的超级伸缩的KVS, 秒杀Redis
  18. 广域网优化对虚拟化的重要性
  19. Box2D v2.1.0用户手册翻译 - 第09章 接触(Contacts)
  20. 医学图像读取学习笔记

热门文章

  1. 赠书 | 集成学习方法及应用,破解AI实践难题
  2. FPGA 无解漏洞 “StarBleed”轰动一时,今天来扒一下技术细节!
  3. 用 C++ 跟你聊聊“桥接模式” | 原力计划
  4. AI持续赋能,搜狗S1会给录音笔行业带来哪些新变化?
  5. 抗住 60 亿次攻击,起底阿里云安全的演进之路 | 问底中国 IT 技术演进
  6. 阿里云边缘计算三年,都为开发者带来了什么?
  7. 王欣的“灵鸽”到底行不行?
  8. 5G 登上“神坛”,区块链裁员求生!
  9. 请别拿程序员当工人使唤!
  10. 如何使用 Lucene 做网站高亮搜索功能?