学习python艰难的方式练习20行:print line_count,f.readline(),

时间:2016-05-17 21:30:35

标签: python-2.7 newline comma

我在学习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) 

0 个答案:

没有答案