2019.04.21 python核心特征
本阶段我们将了解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.闭包的定义和使用

更多精彩