本阶段我们将了解Python是如何管理内存的,学习内存管理让我们掌握python的运行机制;

并且在python中有许多函数式编程的特性,比如闭包,装饰器和生成器,这些都是一些比较难掌握的概念,但面试会经常遇到。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

 

1.生成器与列表的对照使用

  

在Python中, 一边循环一边计算的机制, 称为生成器: generator
创建生成器: G = ( x*2 for x in range(5))
可以通过 next(生成器) 函数获得生成器的下一个返回值
没有更多的元素时, 抛出 StopIteration 的异常
生成器也可以使for 循环,因为生成器也是可迭代对象

这不就是元祖那个推导式吗

 

需要新的数字,就生成一个新的,不同于列表,需要一下子全出来,
更占用内存

 time.clock

%d  是字节吗?

sys.getsizeof()

 生成器:generator

老母鸡下蛋比喻法:列表是直接杀了了取卵,生成器通过next让它下蛋

 

但我还是不知道拿来干嘛呀,只是为了减少内存吗?性能优化吧

生成器和列表推到就只是差括号 和中括号而已  

 

next(g)  g.__next__()底层原理是一样的

g.send(None )

2.生成器的其他生成方式以及元素的遍历方式

  生成器就是你要多少我就给你多少,我不会直接的存储所有

  生成器与列表比较

 

"""

生成器:
什么是生成器?
genterator
记录一个算法,可以一遍循环,一遍计算的一种机制
生成器的作用?
存储1-10000中所有的偶数
1.list
列表推导公式
更加耗时
更加开销系统内存
2.生成器
存储数据(存数的算法)

使用生成器的好处?
1.时间
2.内存开销

使用生成器?
创建生成器: 1. g =( x for x in range(10))

"""

 

生成器的其他生成方式:
1.g = (x for x in range(5))
2. 包含yield关键的函数,为生成器
yield
用在函数中

生成器可以生成的元素的访问以及注意事项:
1.next(g)
2.for循环变量
3.g.__next__()
4.g.send()
使用send()访问的时候,首个元素必须给None参数,后续元素,可以给任意参数

超出生成器生成数据的范围:StopIteration

"""

3.迭代器的使用

可以被next()函数调⽤并不断返回下⼀个值的对象称为迭代器
可以使用isinstance(对象,Iterator)判断对象是否为迭代器

迭代器(Iterator)

如何判断对象是可迭代对象(Iterable)

print(isinstance(list1,Iterable))

 

4.闭包的定义和使用

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄