Python 行打印

Line printing in Python

这个练习来自 Zed Shaw 的书的第 20 章。

我正在尝试了解行号的行为。

当我使用以下代码时,文本文件中的行号打印为 4,这是错误的。在第三行。

current_line += current_line

但是,当我使用以下内容时,行号显示正确

current_line = current_line + 1

谁能解释一下上面两行的区别是什么,在我看来是一样的,为什么会有所不同。

完整代码如下:

from sys import argv
script, input_file = argv

def print_all(f):
    print f.read()

def rewind(f):
    f.seek(0)

def print_a_line(line_count, f):
    print line_count, f.readline()

current_file = open(input_file)

print "First let's print the whole file:\n"

print_all(current_file)

print "Now let's rewind, kind of like a tape."

rewind(current_file)

print "Let's print three lines:"

current_line = 1
print_a_line(current_line, current_file)

current_line += current_line
print_a_line(current_line, current_file)

#current_line = current_line + 1
current_line += current_line
print_a_line(current_line, current_file)

current_line += current_line 扩展为

current_line = current_line + current_line

所以让我们看看你做了什么,把它展开(我们将忽略打印语句)。

current_line = 1
current_line = current_line + current_line # (1 + 1 = 2)
#current_line = 2
current_line = current_line + current_line # (2 + 2 = 4)
#current_line = 4

我想你打算使用

current_line += 1

您没有将 current_line 的值增加常数因子 1,而是增加了 几何级数

current_line += current_linecurrent_line 的值赋给自己 + 自己:

current_line = 5
current_line = current_line + current_line
>>> current_line
>>> 10

current_line = current_line + 1current_line += 1+=1是一个值加1的语法糖)增加[=12=的值] 1.

current_line = 5
current_line = current_line + 1
current_line += 1
>>> current_line
>>> 7

因为current_line是行号的计数器,所以在这种情况下应该使用+= 1