Python for i in range(2,2): print(i) i 变量包含什么,它不包含值 2?

-1 python python-3.x

我试图一步一步地了解这个程序是如何工作的

for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            print(n, 'equals', x, '*', n//x)
            break
    else:
        # loop fell through without finding a factor
        print(n, 'is a prime number')

for i in range(2,2):
    print(i)
Run Code Online (Sandbox Code Playgroud)

这段代码不打印任何内容,那么我包含的实际值是什么,它是否包含垃圾值。

aba*_*ert 6

range(2, 2)是一个空序列。范围是半开的,因此range(2, 2)意味着“>=2<2,其中没有:

\n\n
>>> len(range(2, 2))\n0\n>>> list(range(2, 2))\n[]\n
Run Code Online (Sandbox Code Playgroud)\n\n

因此,当您迭代它时,您会得到一个空迭代器:

\n\n
>>> it = iter(range(2, 2))\n>>> next(it)\nStopIteration:\n
Run Code Online (Sandbox Code Playgroud)\n\n

因此,for i in range(2, 2):循环 0 次,甚至从未将任何内容分配给i,更不用说print对其进行赋值了。

\n\n

因此i包含在此之前发生的任何内容for

\n\n
>>> i = \'this is a string\'\n>>> for i in range(2, 2): pass\n>>> print(i)\nthis is a string\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\xa6 或者,如果它不包含任何内容,则没有i变量:

\n\n
>>> del i\n>>> for i in range(2, 2): pass\n>>> print(i)\nNameError: name \'i\' is not defined\n
Run Code Online (Sandbox Code Playgroud)\n