Python练习题

Python3中range(10)返回的是什么类型

文 / 大炳哥 来源 / 原创 阅读 / 2114 1年前

Python3中 range(10)返回的是什么类型

目标:

【重点】能够说出 range() 的数据类型

【重点】能够使用三种方式证明 range() 是迭代对象

1. 答案

Python3中 range(10) 返回的是一个 range对象 ,而 range对象 是一个可迭代对象。

2. 分析过程

判断 range对象 是一个可迭代对象的方式有三种:

  1. 根据可迭代对象的定义来判断
  2. 利用 collections 模块提供的 Iterable 来判断
  3. 利用 iter()方法来判断

2.1 根据可迭代对象的定义来判断

可迭代对象的定义:

可迭代对象是指实现了 __iter__()方法,或者实现了__getitem__()方法的对象。只要实现其中一种方法,就可以被认为是可迭代对象。

range类 的源码中,就可以找到 __iter__() 方法。

class range:
        def __iter__(self, *args, **kwargs): # real signature unknown
        """ Implement iter(self). """
        pass

2.2 利用 collections 模块提供的 Iterable 来判断

collections 模块提供的 Iterable 类,就表示可迭代对象的类。

因此结合 isinstance() ,就可以判断 range() 是不是 可迭代对象。

from collections.abc import Iterable, Iterator

flag = isinstance(range(10), Iterable)
print(flag)

2.3 利用 iter()方法来判断

iter()函数用于生成一个迭代器,若生成成功,会返回 < iterator object at xxxx >,若报类型错误“TypeError”,说明对象不可迭代,因此用 iter() 可以判断一个对象是否可迭代的,若可以返回一个迭代器就是一个可迭代对象。

print(iter(range(10)))

3. 总结

(1.) 说出 range() 的数据类型

Python3中 range(10) 返回的是一个 range对象 ,而 range对象 是一个可迭代对象。

(2.) 使用三种方式证明 range() 是迭代对象

1. 根据可迭代对象的定义来判断
2. 利用 collections 模块提供的 Iterable 来判断
3. 利用 iter()方法来判断

5

评论

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

站点声明:本站转载作品版权归原作者及来源网站所有,原创内容作品版权归作者所有,任何内容转载、商业用途等均须联系原作者并注明来源。

© 2019 The Pride & Joy of an Artisan. · Designed By duoguyu · Powered By Django京ICP备19006898号-1
相关侵权、举报、投诉及建议等,请发E-mail:lemont0086@163.com

友情链接: 大炳哥的博客 逐梦个人博客 微微的博客 daixu 十年之约