注意:在类中采用列表推导时,因为类定义的局部作用域与列表推导式的局部作用域于不是嵌套函数关系,所以并不能构成Enclosing作用域关系。因此它们是两个独立的局部作用域,不能相互访问。例如:
注意:列表推导与生成器表达式之间的差异十分重要,但很微妙。使用列表推导时,Python实际上创建了包含结果数据的列表。而使用生成器表达式时,Python创建的是只知道如何按照需要生成数据的生成器。在某些应用中,这可能极大地提高性能和内存使用效率。例如:
在这个例子中,生成器表达式提取各行并删除其中的空白,但它实际上没有将整个文件读取到内存中。提取注释的表达式也是如此。直到程序在for循环中进行迭代时,才去读取文件的各行。在这个迭代过程中,每一行都是按需生成的,按条件进行了过滤。事实上,该过程从未把整个文件加载到内存中。因此,这是一种从GB级别大小的Python源文件中提取注释的高效方法。
3、*声明式编程*
主要的编程范式有三种:命令式编程,函数式编程和声明式编程。
命令式编程:以计算机执行步骤为中心How to do it?
函数式编程:以函数为中心,Python的闭包、装饰器、生成器、协程、lambda(创建匿名函数)极大提升了函数式编程能力
声明式编程:以明确的逻辑语义为中心What to do?
列表推导和生成器表达式的声明式还可以用于模拟数据库处理中常见的SQL select语句的行为,例如:
到此这篇nonetype object is not subscriptable翻译(tuple object is not callable翻译)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/38197.html