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。

相关推荐
进击的明明10 小时前
当AI开始“边想边干”:深入聊聊ReAct,以及如何用Python手搓一个简单Agent
python·面试·agent
全栈弄潮儿11 小时前
Python实战第8期:函数
后端·python·编程语言
卷无止境13 小时前
暗流与破局:AI时代的代码安全审查工具全景指南
后端·python
卷无止境15 小时前
一人公司的全栈选型指南:让 AI Agent 写得快,也让生意跑得稳
后端·python
滴啦嘟啦哒17 小时前
【具身笔记】【π0.5 微调与仿真】五、在MuJoCo中实现可视化仿真
笔记·python·vla·具身
全栈练习生17 小时前
AI安全与红队测试
python·ai
费曼学习法17 小时前
把「发送成功」当「送达」?我排查 IM 长消息被静默吞掉的完整过程
python·ai编程·自动化运维
鸽鸽程序猿17 小时前
【项目】【在线判题系统】b端题目增删改
开发语言·python
NetX行者18 小时前
Python 工程化入门:从脚本到规范的 Python 项目结构
网络·python
MasonYyp18 小时前
asyncio并发协程
python