Python std.stdout.write循环问题

Sub*_*evn -1 python python-3.x

我不确定这里发生了什么,但我有一些python代码:

import sys

max_cols = 350
max_rows = 1
r1 = range(max_rows)
r2 = range(max_cols)

for y in r1:
    for x in r2:
        sys.stdout.write('something')
        if x is not max_cols-1:
            sys.stdout.write(',')
Run Code Online (Sandbox Code Playgroud)

现在,这适用于max_cols <= 257的值.但是,如果使用> = 258,最后会得到额外的','.(这里的想法显然是生成一个CSV文件.)

现在,256是一个CS编号,因此这里显然有一些我不知道的事情,因为在此之前一切都完美无缺.当我尝试使用相同的模式写入文件时,也会发生这种情况.

为什么会这样?

使用Python 3.2.

小智 5

is不是检查的平等,但检查身份.x is y仅当两个变量都引用同一个对象时才为真.碰巧,CPython重用小整数的对象 - 但一般来说,身份的概念与平等概念有很大的不同.使用正确的运营商,==!=在平等和不平等分别,和它的作品.

另请注意,只需使用该csv模块即可使代码更加简单和健壮.无需重新发明轮子.