range(10)
返回的是什么类型目标:
【重点】能够说出 range()
的数据类型
【重点】能够使用三种方式证明 range()
是迭代对象
Python3中 range(10)
返回的是一个 range对象
,而 range对象
是一个可迭代对象。
判断 range对象
是一个可迭代对象的方式有三种:
collections
模块提供的 Iterable
来判断iter()方法
来判断可迭代对象的定义:
可迭代对象是指实现了 __iter__()方法
,或者实现了__getitem__()方法
的对象。只要实现其中一种方法,就可以被认为是可迭代对象。
在 range类
的源码中,就可以找到 __iter__()
方法。
class range:
def __iter__(self, *args, **kwargs): # real signature unknown
""" Implement iter(self). """
pass
collections
模块提供的 Iterable
来判断collections
模块提供的 Iterable
类,就表示可迭代对象的类。
因此结合 isinstance()
,就可以判断 range()
是不是 可迭代对象。
from collections.abc import Iterable, Iterator
flag = isinstance(range(10), Iterable)
print(flag)
iter()方法
来判断iter()
函数用于生成一个迭代器,若生成成功,会返回 < iterator object at xxxx >
,若报类型错误“TypeError”
,说明对象不可迭代,因此用 iter()
可以判断一个对象是否可迭代的,若可以返回一个迭代器就是一个可迭代对象。
print(iter(range(10)))
(1.) 说出 range()
的数据类型
Python3中 range(10) 返回的是一个 range对象 ,而 range对象 是一个可迭代对象。
(2.) 使用三种方式证明 range()
是迭代对象
1. 根据可迭代对象的定义来判断
2. 利用 collections 模块提供的 Iterable 来判断
3. 利用 iter()方法来判断
5