需要指导以了解如何以多种方式描述 range 或 range()
Need guidance in understanding how range or range() can be described in so many ways
我对编程非常非常陌生,我从 Python 开始。我将大约三十个视频放入一个流行的在线课程中。在最近的教程中,讲师介绍了范围 [例如,范围 (0,10,1)]。短短几分钟,导师将range或range()引用为:
- 操作员
- 一个函数
- 一个关键字
- 一台发电机
Range 原来也属于 Sequence 数据类型,我想它也可以称为 'object',对吧?我明白同一个“事物”可以根据上下文以不同的方式描述。例如,说我既是加拿大人又是丈夫并不矛盾。问题是在试图理解 Python 中给定术语的作用或状态时,让所有这些类别在我的脑海中保持清晰。是否有一些规则或图表或方法或定义集来理解给定“事物”在 Python 中扮演的所有角色?感谢您的帮助!
下面不只是回答 range()
是什么,而是尝试展示如何调查 python 中的内容。我们可以在每一步检查两件事,抽象 range
,以及分配给变量的初始示例(q 是一个糟糕的变量名,但对简洁很有用):
q=range(0,10,1)
我们还可以导入一些检查 types and keyword:
的帮助
import types
import keyword
现在,让我们看看您为“它是什么”提出的选项?
操作员
在python中,内置运算符“执行对象比较、逻辑运算、数学运算和序列运算”(来自the operator module docs)你可以在[=中看到一长串运算符81=] 提供,range()
不存在。
一个函数(或方法)
这是乍一看比较混乱的一个,因为谷歌搜索“python 范围函数”给出了数以千计的非常权威的命中。此外,范围甚至列在内置函数的文档中。也就是说,根据那些相同的文档,它不是一个函数:“class 范围(开始,停止 [,步骤])”。我们可以按如下方式进行测试,使用我们之前的一个导入和 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 开始以获得权威答案:“范围 type 代表一个不可变的数字序列...... “
可以理解,这是准确的,但对于初次学习的人来说很难解析。检查对象类型的最简单方法(除了使用 types
和 isinstance
)就是检查 type()
。这给出了迷人的重言式定义,例如:
type(type)
type
那么什么是range
,什么是范围实例?
type(range)
type
type(q)
range
并且,为了完成您问题的最后一部分,它是一个对象吗?
python 中的所有内容都是对象。
isinstance(q, object)
True
所以,从上面我们可以推导出“什么是 python 中的范围?”的答案。 is: Range 是一种类型,定义的范围是 range
type
的 object
的一个实例
我对编程非常非常陌生,我从 Python 开始。我将大约三十个视频放入一个流行的在线课程中。在最近的教程中,讲师介绍了范围 [例如,范围 (0,10,1)]。短短几分钟,导师将range或range()引用为:
- 操作员
- 一个函数
- 一个关键字
- 一台发电机
Range 原来也属于 Sequence 数据类型,我想它也可以称为 'object',对吧?我明白同一个“事物”可以根据上下文以不同的方式描述。例如,说我既是加拿大人又是丈夫并不矛盾。问题是在试图理解 Python 中给定术语的作用或状态时,让所有这些类别在我的脑海中保持清晰。是否有一些规则或图表或方法或定义集来理解给定“事物”在 Python 中扮演的所有角色?感谢您的帮助!
下面不只是回答 range()
是什么,而是尝试展示如何调查 python 中的内容。我们可以在每一步检查两件事,抽象 range
,以及分配给变量的初始示例(q 是一个糟糕的变量名,但对简洁很有用):
q=range(0,10,1)
我们还可以导入一些检查 types and keyword:
的帮助import types
import keyword
现在,让我们看看您为“它是什么”提出的选项?
操作员
在python中,内置运算符“执行对象比较、逻辑运算、数学运算和序列运算”(来自the operator module docs)你可以在[=中看到一长串运算符81=] 提供,range()
不存在。
一个函数(或方法)
这是乍一看比较混乱的一个,因为谷歌搜索“python 范围函数”给出了数以千计的非常权威的命中。此外,范围甚至列在内置函数的文档中。也就是说,根据那些相同的文档,它不是一个函数:“class 范围(开始,停止 [,步骤])”。我们可以按如下方式进行测试,使用我们之前的一个导入和 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 开始以获得权威答案:“范围 type 代表一个不可变的数字序列...... “
可以理解,这是准确的,但对于初次学习的人来说很难解析。检查对象类型的最简单方法(除了使用 types
和 isinstance
)就是检查 type()
。这给出了迷人的重言式定义,例如:
type(type)
type
那么什么是range
,什么是范围实例?
type(range)
type
type(q)
range
并且,为了完成您问题的最后一部分,它是一个对象吗? python 中的所有内容都是对象。
isinstance(q, object)
True
所以,从上面我们可以推导出“什么是 python 中的范围?”的答案。 is: Range 是一种类型,定义的范围是 range
type
object
的一个实例