我在学习Python The Hard Way中做了练习20,我遇到了一些我自己无法解释的事情。
以下代码行与f.readline()之后的逗号一样,位于第二个代码块中,这使得该程序的输出有些不同。
def print_a_line(line_count, f): #line_count is defined by current line, see L27
print line_count, f.readline(), # <-- this comma
逗号的结果:
line 1 apple
line 2 banana
line 3 kiwi
Now let's rewind to 0 bytes using f.seek(0)
Let's print three lines
1 line 1 apple
2 line 2 banana
3 line 3 kiwi
没有逗号的结果:
line 1 apple
line 2 banana
line 3 kiwi
Now let's rewind to 0 bytes using f.seek(0)
Let's print three lines
1 line 1 apple
2 line 2 banana
3 line 3 kiwi
显然,区别在于线之间有换行符。我无法解释这个逗号是如何做到的。 Zed在视频中展示了它,但没有真正解释它。对我而言,即使是没有逗号的换行也没有意义。它们来自哪里?
没有逗号的脚本:
from sys import argv
script, input_file = argv
def print_all(f):
print f.read() # the f variable is file, so this is actually file.read()
def rewind(f):
f.seek(0) # Seek 0 bytes, in other words, go back to the beginning of the file.
def print_a_line(line_count, f): #line_count is defined by current line, see L27
print line_count, f.readline()
current_file = open(input_file)
print "First let's print hte whole file:\n"
print_all(current_file)
print "Now let's rewind to 0 bytes using f.seek(0)"
rewind(current_file)
print "Let's print three lines"
current_line = 1
print_a_line(current_line, current_file)
current_line = current_line + 1
print_a_line(current_line, current_file)
current_line = current_line + 1
print_a_line(current_line, current_file)
以下是带逗号的整个脚本:
from sys import argv
script, input_file = argv
def print_all(f):
print f.read() # the f variable is file, so this is actually file.read()
def rewind(f):
f.seek(0) # Seek 0 bytes, in other words, go back to the beginning of the file.
def print_a_line(line_count, f): #line_count is defined by current line, see L27
print line_count, f.readline(),
current_file = open(input_file)
print "First let's print hte whole file:\n"
print_all(current_file)
print "Now let's rewind to 0 bytes using f.seek(0)"
rewind(current_file)
print "Let's print three lines"
current_line = 1
print_a_line(current_line, current_file)
current_line = current_line + 1
print_a_line(current_line, current_file)
current_line = current_line + 1
print_a_line(current_line, current_file)