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

2024-05-16 13:03:37 发布

您现在位置:Python中文网/ 问答频道 /正文

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

  • 接线员
  • 函数
  • 关键词
  • 发电机

事实证明,范围也在序列数据类型中,我想它也可以称为“对象”,对吗?我理解,同一件“事情”可以根据上下文以不同的方式描述。例如,说我既是加拿大人又是丈夫并不矛盾。问题是,当我试图理解Python中给定术语的角色或状态时,要将所有这些类别保持在头脑中。是否有一些规则、图表、方法或定义集可以理解给定“事物”在Python中扮演的所有角色?谢谢你的帮助


Tags: 函数角色视频编程range教程序列关键词
1条回答
网友
1楼 · 发布于 2024-05-16 13:03:37

下面不只是回答range()是什么,而是试图展示如何研究python中的东西是什么或不是什么。我们可以在每个步骤中检查两件事,抽象range,以及分配给变量的初始示例(q是一个糟糕的变量名,但为了简洁起见很有用):

q=range(0,10,1)

我们还可以导入一些有关检查typeskeyword的帮助:

import types
import keyword

现在,让我们看看你提出的“它是什么”选项

操作员

在python中,内置操作符“执行对象比较、逻辑操作、数学操作和序列操作”(来自the operator module docs),您可以在提供的链接中看到一长串操作符,而range()不在其中

函数(或方法)

乍一看,这是一个更令人困惑的问题,因为谷歌搜索“python range function”会给出数千个非常权威的点击。此外,内置函数的文档中甚至列出了范围。也就是说,根据相同的文档,它不是一个函数:“类范围(开始,停止[,步骤])”。我们可以如下测试,使用我们早期的导入和pythonic方法来检查某物是否是您认为的那样,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

现在我们可以看看其他一些选项,从the docs for range开始得到权威的答案:“rangetype表示一个不可变的数字序列…”

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

type(type)
type

那么什么是range,什么是范围的实例

type(range)
type

type(q)
range

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

isinstance(q, object)
True

因此,从上面,我们可以推断“python中的范围是什么?”的答案是:范围是一种类型,定义的范围是range{}的object实例

相关问题 更多 >