Python学习杂记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习杂记相关的知识,希望对你有一定的参考价值。

Python中关键字yield有什么作用?

首先得理解generators,而理解generators前还要理解iterables:

你可以用在for...in...语句中的都是可迭代的:比如lists,strings,files...因为这些可迭代的对象你可以随意的读取所以非常方便易用,但是你必须把它们的值放到内存里,当它们有很多值时就会消耗太多的内存。

生成器也是迭代器的一种,但是你只能迭代它们一次.原因很简单,因为它们不是全部存在内存里,它们只在要调用的时候在内存里生成。

note:生成器和迭代器的区别就是用()代替[],还有你不能用for i in mygenerator第二次调用生成器。

Yield的用法和关键字return差不多:

>>> def createGenerator():

... mylist = range(3)

... for i in mylist:

... yield i*i ...

>>> mygenerator = createGenerator() # 创建生成器

>>> print(mygenerator) # mygenerator is an object!

<generator object createGenerator at 0xb7555c34>

>>> for i in mygenerator:

... print(i)

0

1

4

当你的函数要返回一个非常大的集合并且你希望只读一次的话,那么它就非常的方便了.

要理解Yield你必须先理解当你调用函数的时候,函数里的代码并没有运行.函数仅仅返回生成器对象,这就是它最微妙的地方:-)

然后呢,每当for语句迭代生成器的时候你的代码才会运转.

 

以上是关于Python学习杂记的主要内容,如果未能解决你的问题,请参考以下文章

Python学习杂记_4_分支和循环

Python学习杂记_6_字典常用操作

Python学习杂记_5_列表常用操作

Python学习杂记_1_PyCharm使用的一些收获

Python学习杂记_2_字符串相关的一些操作

学习杂记