我对编程非常非常陌生,我从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类型表示一个不可变的数字序列…">
可以理解,这是准确的,但对于第一次学习的人来说很难解析。检查对象类型的最简单方法(除了使用types
和isinstance
)是检查type()
。它给出了迷人的重复定义,例如:
type(type)
type
那么什么是range
,什么是range的实例?
type(range)
type
type(q)
range
结束你问题的最后一部分,它是一个对象吗?python中的一切都是对象。
isinstance(q, object)
True
因此,从上面,我们可以推断出"python中的范围是什么?"is: Range是一种类型,定义的Range是range
type
的object
的实例