首页 > 编程语言 > 详细

python高级语法

时间:2019-05-18 23:47:53      阅读:156      评论:0      收藏:0      [点我收藏+]

 

python中难以理解的最常见的特性是:

迭代器(iterator),生成器(generator),装饰器(decorator),上下文管理器(context manager)

迭代器

迭代器只不过是一个实现了迭代器协议的容器对象。它基于以下两个方法:

    1. __next__:返回容器的下一个元素
    2. __iter__:返回迭代器本身

迭代器可以利用内置的iter函数和一个序列来创建,如:

技术分享图片

当遍历完成时会引发一个StopIteration异常。这样迭代器就可以与循环兼容,因为可以捕获这个异常并停止循环。

创建自定义的迭代器,可以编写一个具有__next__方法的类,只有这个类提供返回迭代器实例的__iter__特殊方法:

技术分享图片

下面时这个迭代器的用法实例:

技术分享图片

迭代器本身是一个底层的特性和概念,在程序中可以不用它。但它为生成器这一更有趣的特性提供了基础

迭代器详解参考:https://blog.csdn.net/weixin_40907382/article/details/80234743https://www.cnblogs.com/leohahah/p/10189281.html

生成器(yield语句)

基于yield语句,生成器可以暂停函数并返回一个中间结果。该函数会保存执行上下文,方便在下个yield语句前使用这个上下文

举个列子,斐波那契数列可以用生气器语法来实现。

技术分享图片

可以用next()函数或for循环从生成器中获取新的元素,就像迭代器一样:

技术分享图片

这个函数返回一个generator对象,是特殊的迭代器,可以被无限次调用,每次都会生成序列的下一个元素,不必提供使函数停止的方法。

生成器还有一个好处就是,可以节省内存空间,不是像列表一样,遍历列表时一次性把所有数据都加载到内存中,再遍历,而生成器是用一个生成一个,很大程度上节省了内存空间。

生产器时python中协程,异步并发等其他概念的基础

生成器详解参考:http://python.jobbole.com/88677/

装饰器

 

 

python高级语法

原文:https://www.cnblogs.com/gzl420/p/10887525.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!