需要指导来理解range或range()如何以多种方式描述



我对编程非常非常陌生,我从Python开始。我把大约30个视频放到一个受欢迎的在线课程中。在最近的教程中,讲师介绍了范围[例如,范围(0,10,1)]。在短短的几分钟内,导师将range或range()称为:

  • 操作符
  • 发电机

Range也是,事实证明,在序列数据类型内,我想它也可以被称为"对象",对吧?我理解同样的"事情"。可以根据上下文以不同的方式描述。例如,说我既是加拿大人又是丈夫,这并不矛盾。问题是,当我试图理解Python中给定术语的角色或状态时,要把所有这些类别都记在脑子里。是否有一些规则、图表、方法或一组定义来理解给定事物的所有角色?在Python中扮演什么角色?谢谢你的帮助!

不只是回答range()是什么,下面尝试展示如何调查python中是什么或不是什么。我们可以在每一步检查两件事,抽象的range,以及分配给变量的初始示例(q是一个糟糕的变量名,但对简洁有用):

q=range(0,10,1)

我们还可以导入一些帮助来检查类型和关键字:

import types
import keyword

现在,让我们看看你对"what is it"的建议选项?

操作符

在python中,内置运算符执行对象比较、逻辑运算、数学运算和序列运算。(从操作符模块文档)您可以在提供的链接中看到操作符的长列表,而range()不在那里。

函数(或方法)

乍一看,这是比较令人困惑的一个,因为谷歌"python范围函数"提供了数千个非常权威的点击。此外,内置函数的文档中甚至列出了范围。也就是说,根据相同的文档,它不是一个函数:&;class range(start, stop [,step])&;我们可以像下面这样进行测试,使用我们之前的一个导入和python方法来检查某些内容是否如您所想的那样,isinstance():

isinstance(range, types.FunctionType)
False
isinstance(q, types.FunctionType)
False
isinstance(range, types.BuiltinFunctionType)
False
isinstance(q, types.BuiltinFunctionType)
False
isinstance(range, types.BuiltinMethodType)
False
isinstance(q, types.BuiltinMethodType)
False

谢天谢地,这要简单得多。

import keyword
keyword.iskeyword(range)
False

您还可以使用print(keyword.kwlist)查看python中所有关键字的列表

发电机

正如评论中提到的,虽然range()确实生成一些东西,但它在python中不是generator类型的对象。我们再检查一下:

isinstance(range, types.GeneratorType)
False
isinstance(q, types.GeneratorType)
False

现在我们可以看一些其他的选项,从文档中获取权威的答案:" range类型表示一个不可变的数字序列…">

可以理解,这是准确的,但对于第一次学习的人来说很难解析。检查对象类型的最简单方法(除了使用typesisinstance)是检查type()。它给出了迷人的重复定义,例如:

type(type)
type

那么什么是range,什么是range的实例?

type(range)
type
type(q)
range

结束你问题的最后一部分,它是一个对象吗?python中的一切都是对象。

isinstance(q, object)
True

因此,从上面,我们可以推断出"python中的范围是什么?"is: Range是一种类型,定义的Range是rangetypeobject的实例

相关内容

  • 没有找到相关文章

最新更新