Python教程

当前位置:小码王 > 学习教程 > Python教程

从零开始学Python编程六:Python的高级特性二
导读:今天继续来说说有关Python的高级特性,跟着我们南京小码王Python培训班老师循序渐进学习,零基础的孩子也能快速入门,感受到Python编程的乐趣。

初学编程的孩子选择哪种语言入门好?比起java、C++,小编更推荐Python,前面已经从零开始介绍了不少Python相关的基础知识,今天继续来说说有关Python的高级特性,跟着我们南京小码王Python培训班老师循序渐进学习,零基础的孩子也能快速入门,感受到Python编程的乐趣。


生成器


如果你想要一百万个数,而这些数里只有一百个数是你经常要用的,剩下的都几乎不怎么会用到,那么如果直接把这一百万个数全部放在list中是不明智的因为这会浪费较多存储空间,生成器就是为了解决这个问题而生的。


如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。


生成器表达式: 通列表解析语法,只不过把列表解析的[]换成()


1.jpg


我们可以直接打印出list的每一个元素,但我们怎么打印出generator的每一个元素呢?


如果要一个一个打印出来,可以通过next()函数获得generator的下一个返回值:


2.jpg


当然这种获取值的方法很笨,所以我们一般用循环来迭代生成器的对象


3.jpg


迭代器


前面我们已经学过了for循环,我们知道for循环可以遍历list、tuple、dict、set、str和生成器。


这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。


可以使用isinstance()判断一个对象是否是Iterable对象:


>>> from collections import Iterable

>>> isinstance([], Iterable)

True

>>> isinstance({}, Iterable)

True

>>> isinstance('abc', Iterable)

True

>>> isinstance((x for x in range(10)), Iterable)

True

>>> isinstance(100, Iterable)

False


凡是可作用于for循环的对象都是Iterable类型;


凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;


集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。


Python的for循环本质上就是通过不断调用next()函数实现的,例如:


4.jpg


这几个特性结合实例来理解是不是就没有那么困难了呢?南京小码王专业从事青少儿编程教育,也开设了专门的Python培训班,有丰富的python教程和专业老师,通过理论结合实践的方式教学,让孩子能更好的掌握python知识。目前小码王还有0元体验课正在进行中,欢迎大家前来试听体验,感受python编程的乐趣。