Python 中的 range 是类还是函数?range 对象该怎么理解?

Python 中的 range 到底是什么?

在 Python 中,range 不只是一个用来生成数字范围的写法。

更准确地说:

range 是一个类,range(...) 会创建并返回一个 range 对象。

例如:

python 复制代码
r = range(70, 101, 10)

这里可以理解为:

text 复制代码
range → 类
range(70, 101, 10) → 一个 range 对象
r → 指向这个 range 对象的变量名

可以通过:

python 复制代码
print(type(r))

得到:

text 复制代码
<class 'range'>

说明 r 指向的确实是一个 range 类型的对象。


不同的 range 对象可以包含不同的数据

例如:

python 复制代码
r1 = range(70, 101, 10)
r2 = range(70, 101, 5)

r1 和 r2 指向的是两个不同的 range 对象。

text 复制代码
r1 → range(70, 101, 10)
r2 → range(70, 101, 5)

它们表示的数据不同:

python 复制代码
print(list(r1))
# [70, 80, 90, 100]

print(list(r2))
# [70, 75, 80, 85, 90, 95, 100]

但是它们的对象类型是一样的:

python 复制代码
print(type(r1)) # <class 'range'>
print(type(r2)) # <class 'range'>

所以可以理解为:

不同变量可以指向不同的 range 对象。
这些对象内部表示的数据可以不同,但它们都属于 range 类型。


变量只是指向对象

例如:

python 复制代码
r = range(70, 101, 10)

并不是说 r 本身变成了 range。

更准确地说:

变量 r 指向了 range(70, 101, 10) 这个 range 对象。

如果换成:

python 复制代码
r = range(70, 101, 5)

那么现在 r 就改为指向另一个 range 对象。


一句话理解

range 是类,range(...) 是这个类创建出来的对象,变量只是指向这个对象。

不同的 range 对象可以表示不同的数据,但它们的类型都是range。

相关推荐
VidDown2 小时前
从视频画面里提取文字:OCR、文字检测与结构化输出
python·网络协议·ocr·音视频·视频编解码·视频
言乐62 小时前
Python实现ai进化
python·django·virtualenv·pygame·tornado
南笙北梦2 小时前
从零写一个CAD 02:实体容器、Esc取消与键盘失灵的排查
python
硫酸锌012 小时前
在手机上运行Python增量备份手机数据到PC电脑
android·windows·python
沐欣工作室_lvyiyi3 小时前
家庭水资源节能系统设计(论文+源码)
c++·python·云平台·单片机毕业设计·单片机仿真·电子信息工程毕业设计·机械电子工程
FelixZhang0283 小时前
量化求真10|回测通过以后,策略就能上场吗?
人工智能·python·深度学习·学习·机器学习·金融·lstm
Ticnix3 小时前
你的 Agent 聊到第 20 轮就"失忆"?你管理的是历史,高手管理的是上下文
后端·python·agent
Raspberry_Pi_官方账号3 小时前
Raspberry Pi 官方分享:利用 14MB 的 Function-Calling LLM 实现端侧自然语言硬件控制
python·树莓派·raspberry pi
醇氧3 小时前
CentOS7.9 Yum 安装 Redis6.x(RPM 包,无需编译,推荐 remi 源)
linux·python