Loading... 我们认为 range 函数会生成一个 list,但是我们发现返回的类型不是 list,而是 range。 我查询了好些个资料进行学习和思考,如下是我的一点思考的成果,说出来跟大家分享和讨论一下: 首先教大家一个很简单的函数,在 python 里面可以轻松的查询一个函数的帮助文档,它就是 `help()` 函数。help 函数里面的参数填写你要查询的函数名字即可,比如我们现在要查询 range 函数的帮助,打开我们的 IDLE,使用 python shell 模式输入代码:`help(range)` 回车查看结果: ![help-range.jpg](http://static.fox-9.com/uploads/2021/08/06/help-range.jpg!webp) 可以看到返回的结果都是英文的,看帮助也很简单,不懂的放到百度翻译或者谷歌翻译什么的帮你翻译一下看就好了。来让我们来一起解读一下帮助文档中的这一句话: > Return an object that produces a sequence of integers from start (inclusive) to stop (exclusive) by step. 这句话翻译过来的意思就是: > 返回一个对象,这个对象产生从开始点(包含)到结束点(不包含),步进值为step的一系列的整数。 看到么?官方的文档只字未提 list 这个东西,而返回的是一系列的整数。 经过查询资料和思考,我认为 range 函数真正返回的是一个可迭代对象而不是列表 list。虽然在很多情况下,range 函数的返回值的行为怎么看都像一个 list,因为我们可以一个个的读取里面的数字,赋值给 for 循环的变量。但请不要抱有幻想,它确实不是一个列表了。它只是在每次迭代循环的时候返回一个数字,像列表返回元素那样,实际上,在内存中并没有存着一个 list 对象,这样同时还节省了内存空间。我们可以把这种对象(range 对象)称为可迭代对象。如果我们真的不死心,要把 range 函数返回的东西变成一个真正的列表,我们可以这么写:`list(range(5))`。这样输出后肯定是一个 list 了。 好了,本节课我的一点思考就跟大家提到这里。我也在不断学习中,我的思考也不一定是完全准确的。大家如果有任何的想法可以在这篇文章的下方跟帖留言进行讨论。希望我们学得更多,看得更远。 以下是我们的视频教程: **在线观看:** http://v.youku.com/v_show/id_XMjcxNDMxNDAwNA==.html **高清源文件下载:** <div class="hideContent">该部分仅登录用户可见</div> 感谢大家的收看,我们下期再见! 最后修改:2021 年 08 月 06 日 © 允许规范转载 赞 赠人玫瑰,手留余香