1、*列表推导*
用到函数的一个常见的操作是将其用于列表的所有项,并使用结果创建一个新的列表。例如:
注意:在类中采用列表推导时,因为类定义的局部作用域与列表推导式的局部作用域于不是嵌套函数关系,所以并不能构成Enclosing作用域关系。因此它们是两个独立的局部作用域,不能相互访问。例如:
2、生成器表达式
生成器表达式是一个对象,它执行的计算同与列表推导相同,但会迭代地生成结果。例如:
注意:列表推导与生成器表达式之间的差异十分重要,但很微妙。使用列表推导时,Python实际上创建了包含结果数据的列表。而使用生成器表达式时,Python创建的是只知道如何按照需要生成数据的生成器。在某些应用中,这可能极大地提高性能和内存使用效率。例如:
在这个例子中,生成器表达式提取各行并删除其中的空白,但它实际上没有将整个文件读取到内存中。提取注释的表达式也是如此。直到程序在for循环中进行迭代时,才去读取文件的各行。在这个迭代过程中,每一行都是按需生成的,按条件进行了过滤。事实上,该过程从未把整个文件加载到内存中。因此,这是一种从GB级别大小的Python源文件中提取注释的高效方法。
3、声明式编程*
主要的编程范式有三种:命令式编程,函数式编程和声明式编程。
命令式编程:以计算机执行步骤为中心How to do it?
函数式编程:以函数为中心,Python的闭包、装饰器、生成器、协程、lambda(创建匿名函数)极大提升了函数式编程能力
声明式编程:以明确的逻辑语义为中心What to do?
列表推导和生成器表达式的声明式还可以用于模拟数据库处理中常见的SQL select语句的行为,例如:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/199095.html