python函数生成式的简单介绍

python极简教程06:生成式和装饰器 测试奇谭 , BUG不见 。
这一场,主讲python的生成式和装饰器 。
目的:掌握四种生成式(列表、生成器、集合、字典),装饰器的原理和使用 。
能够用一行代码,快速高效的生成数据 。(这就不需要再通俗的讲解了吧)
举个例子:提取1-100之间的奇数
使用(),而不是 []
举个例子:列表元素去重
举个例子:字典kv反转
顾名思义:增强函数或类的功能的一个函数 。
装饰器的作用:增强函数的功能,确切的说,可以装饰函数,也可以装饰类 。
初学的你 , 还是太难理解?
你开视频聊天 , 觉得自己的颜值不在线,于是乎 , 你使用美颜,增强装饰自己的颜值 。
对于美颜这个功能来说,你可以用,我可以用,所有人都可以用,以此来增强装饰自己的颜值 。
方法一:不用语法糖@符号
方法二:采用语法糖@符号
再举个例子:计算函数时间
Python中列表生成式和生成器的区别列表生成式语法:
[x*x for x in range(0,10)] //列表生成式,这里是中括号
//结果 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
(x*x for x in range(0,10)) //生成器, 这里是小括号
//结果 generator object genexpr at 0x7f0b072e6140
二者的区别很明显:
一个直接返回了表达式的结果列表,而另一个是一个对象,该对象包含了对表达式结果的计算引用,通过循环可以直接输出
g = (x*x for x in range(0,10))
for n in g:
print n
结果
1
【python函数生成式的简单介绍】4
9
16
25
36
49
64
81
当表达式的结果数量较少的时候,使用列表生成式还好 ,  一旦数量级过大, 那么列表生成式就会占用很大的内存,
而生成器并不是立即把结果写入内存,而是保存的一种计算方式,通过不断的获?。?可以获取到相应的位置的值,所以占用的内存仅仅是对计算对象的保存
python列表推导式和生成器表达式-列表推导式和生成器表达式以及字典推导式 通常被视为Python中函数式编程的一部分,列表推导允许您使用包含较少代码的for循环创建列表 。
用[] 包围
用{} 包围
生成器表达式允许在没有yield关键字的情况下即时创建生成器 。
语法和概念类似于列表推导的语法和概念:用()包围
python列表生成式在哪里?把要生成的元素放在前面,后面跟上for循环
如:【x+10 for x in range(15)】
生成器可以理解为用于生成列表、元组等可迭代对象的机器 。既然是机器 , 没启动之前,在Python中只是一个符号 。也就是说,生成器还不是实际意义上的列表,因此比列表更加节省内存空间,必要时,生成器可以按照需要去生成列表 。
解释
生成器也是一种迭代器 , 但是你只能对其迭代一次 。这是因为它们并没有把所有的值存在内存中,而是在运行时生成值 。你通过遍历来使用它们,要么用一个“for”循环,要么将它们传递给任意可以进行迭代的函数和结构 。大多数时候生成器是以函数来实现的 。然而 , 它们并不返回一个值 , 而是yield(暂且译作“生出”)一个值 。
Python中生成器表达式的理解?9.11. 生成器表达式
有时简单的生成器可以用简洁的方式调用,就像不带中括号的链表推导式 。这些表达式是为函数调用生成器而设计的 。生成器表达式比完整的生成器定义更简洁,但是没有那么多变,而且通常比等价的链表推导式更容易记 。

推荐阅读