python十大高级特性_python高级特性

列表生成式

列表生成式就是一个用来生成列表的特定语法形式的表达式。

是Python提供的一种生成列表的简洁形式, 可快速生成一个新的list。

普通的语法格式:[exp for iter_var in iterable]

带过滤功能语法格式: [exp for iter_var in iterable if_exp]

循环嵌套语法格式: [exp for iter_var_A in iterable_A for iter_var_B in iterable_B]

字典生成式:用来快速生成字典;

集合生成式:用来快速生成集合;

生成器

什么叫生成器?

在Python中,一边循环一边计算的机制,称为生成器:Generator。

什么时候需要使用生成器?

一般情况下我们不需要使用生成器,只有当我们因为性能限制才需要用到,比如我们使用python读取一

个10g的文件,如果一次性将10g的文件加载到内存处理的话(read方法),内存肯定会溢出;这里如果可以

使用生成器把读写交叉处理进行,比如使用(readline和readlines)就可以再循环读取的同时不断处理,这样就可以节省大量的内存空间.

如何创建生成器

如何创建生成器?

第一种方法: 列表生成式的改写。 []改成()

第一种方法: yield关键字。

如何打印生成器的每一个元素呢?

通过for循环, 依次计算并生成每一个元素。

如果要一个一个打印出来,可以通过next()函数获得生成器的下一个返回值。

生成器特点

生成器的特点是什么?

节约内存

迭代到下一次的调用时,所使用的参数都是第一次所保留下的,即是

说,在整个所有函数调用的参数都是第一次所调用时保留的,而不是新

创建的。

迭代器

迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。

可迭代对象:可以直接作用于for循环的对象(如何判断是否可以迭代?)

一类是集合数据类型,如list, tuple,dict, set,str等;

一类是generator,包括生成器和带yield的generator function。

可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。

生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator。

把list、dict、str等Iterable变成Iterator可以使用iter()函数

迭代器和生成器的区别

闭包

函数引用?

什么是闭包?

闭包的概念就是当我们在函数内定义一个函数时,这个内部函数使用了外部函数的临时变量,且外部函数的返回值是内部函数的引用时,我们称之为闭包。

闭包再理解? 内部函数对外部函数作用域里变量的引用(非全局变量),则称内部函数为闭包。

nonlocal关键字? 显式的指定变量不是闭包的局部变量

闭包的一个常用场景就是装饰器。

举例

函数line与变量a,b构成闭包。在创建闭包的时候,我们通过line_conf的参数a,b说明了这两个变量的取值,

这样,我们就确定了函数的最终形式(y=x+1和y=4x+5)。

优点: 闭包也具有提高代码可复用性的作用。

装饰器

装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的

前提下增加额外的功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,

比如:插入日志、性能测试、事务处理、缓存、权限校验等应用场景。

为什么需要装饰器?

写代码要遵循 开放封闭 原则,虽然在这个原则是用的面向对象开发,但是也适用于函数式编程,简单来说,它规定已经实现的功能代码不允许被修改,但可以被扩展,即:

封闭:已实现的功能代码块

开放:对扩展开发

装饰器功能

引入日志

函数执行时间统计

执行函数前预备处理

执行函数后清理功能

权限校验等场景

缓存

标签:闭包,函数,迭代,python,生成式,生成器,高级,特性,iter

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值