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。