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。

相关推荐
天天被压力7 分钟前
【A股分钟级高频数据完全手册 #10】股票实时行情数据接口Python:公开源实时交易取数
java·人工智能·python
特立独行的猫A10 小时前
我给女儿写了个打字练习:一边敲键盘,一边把小学英语单词记牢
java·后端·python
cpolar技术支持10 小时前
「我这边连不上你那个服务」—— 用清单驱动的 TCP 连通性只读看板,cpolar 让远端同事自己取证
python·内网穿透·tcp·cpolar·网络诊断
云和数据.ChenGuang11 小时前
LangGraph 异步 Node 的设计与写法实践
开发语言·人工智能·python·机器学习·php
天诰12 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
benchmark_cc12 小时前
用 QuantDash 读取美股行情:AAPL.US 的运行前检查、排错顺序与数据校验清单
python·数据分析·pandas·量化交易·股票数据·quantdash
羲云网络16 小时前
GPT Image 2.6 接入指南:Flare、Sunburst 怎么选,编辑失败如何排查
人工智能·python·aigc·图像生成·acedatacloud
橙橙笔记19 小时前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能
小小张说故事19 小时前
Python 的 class 语句到底执行了什么?拆开 __prepare__、metaclass.__new__ 和那个被讲反的 __set_name__ 顺序
python
天天被压力21 小时前
【A股分钟级高频数据完全手册 #07】北交所历史分钟K线接口:京市Pro版分时批量
java·人工智能·python