为什么';当您在for循环中使用负范围时,Python会抛出ValueError吗?

为什么';当您在for循环中使用负范围时,Python会抛出ValueError吗?,python,for-loop,Python,For Loop,我想知道为什么这不会抛出ValueError: >>> for i in range(-1): ... print "something" ... >>> 以这种方式使用这个否定参数有什么用处吗?Range也可以接受否定步骤 In [2]: list(range(0, -10, -1)) Out[2]: [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] 更不用说负数的正步进范围了 In [3]: list(

我想知道为什么这不会抛出ValueError:

>>>    for i in range(-1):
...        print "something"
...
>>>

以这种方式使用这个否定参数有什么用处吗?

Range也可以接受否定步骤

In [2]: list(range(0, -10, -1))
Out[2]: [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
更不用说负数的正步进范围了

In [3]: list(range(-9, 1))
Out[3]: [-9, -8, -7, -6, -5, -4, -3, -2, -1, 0]
至于为什么它没有在一个否定论点的版本上抛出错误,我认为这只是禅宗的一个例子

特殊情况不足以违反规则


默认情况下,
范围
函数从0开始。此外,默认情况下,步长为正1。您只为函数提供了一个参数(停止点),该参数为
-1
。因此,它试图将从0增加到-1

请参阅上的文档

如果省略start参数,则默认为0

如果您希望变成负数,则需要包括
开始
停止
步骤
值:

range(0, -10, -1)
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
没有引发异常,因为它的行为与文档描述的一样。

range(-1)
是一个空列表。您可以迭代空列表,但它根本不会循环。