代码中最后一个逗号的用途是什么?

12 投票
2 回答
4758 浏览
提问于 2025-04-16 20:03
for x in range(1, 11):
     print repr(x).rjust(2), repr(x*x).rjust(3),
     # Note trailing comma on previous line
     print repr(x*x*x).rjust(4)

结果:

 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

如果这是一个换行符,那作者为什么还可以再写一次Print语句呢?

如果我把Print去掉:

for x in range(1, 11):
     print repr(x).rjust(2), repr(x*x).rjust(3),
     # Note trailing comma on previous line
     repr(x*x*x).rjust(4)

结果:

 1   1  2   4  3   9  4  16  5  25  6  36  7  49  8  64  9  81 10 100

显然最后一行被忽略了。为什么呢?是因为它不是一个语句吗?

如果我把最后的表达式放回到第二行:

for x in range(1, 11):
     print repr(x).rjust(2), repr(x*x).rjust(3), repr(x*x*x).rjust(4)

结果:

 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

2 个回答

3

在打印语句的末尾加一个逗号,可以防止在字符串后面自动添加换行符。你可以查看这个链接了解更多信息:http://docs.python.org/reference/simple_stmts.html#the-print-statement

在你修改过的代码中:

for x in range(1, 11):
    print repr(x).rjust(2), repr(x*x).rjust(3),
    # Note trailing comma on previous line
    repr(x*x*x).rjust(4)

最后一行实际上变成了一个未使用的表达式,因为在Python中,语句通常是通过换行来分开的。如果你在打印语句的末尾加上一个反斜杠(\)——这是Python的续行符,并且去掉注释,那么repr(x*x*x).rjust(4)就会被加到打印语句里。

为了更清楚地说明:

print repr(x).rjust(2), repr(x*x).rjust(3), repr(x*x*x).rjust(4)

print repr(x).rjust(2), repr(x*x).rjust(3), \
repr(x*x*x).rjust(4)

是等价的,但

print repr(x).rjust(2), repr(x*x).rjust(3),
repr(x*x*x).rjust(4)

就不是。这种打印语句的奇怪之处是Python 3中修复的内容之一,因为它把打印语句变成了一个函数。你可以查看这个链接了解更多信息:http://docs.python.org/release/3.0.1/whatsnew/3.0.html#print-is-a-function

20

这段话的意思是,使用 print 时,它默认会在输出的文本后面加一个换行符,也就是换到下一行。

正如Dave提到的,Python 2.x的文档中说:… "在输出的最后会加一个'\n'字符,除非print语句以逗号结束."

更新:

Python 3.x的文档说明 print() 是一个函数,它可以接受一个叫 end 的参数,默认值是换行符 \n

撰写回答