2011-06-22 51 views
9
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語句爲什麼呢?

如果我刪除打印:

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 

回答

19

它停止print從文的末尾打印一個換行符。

正如戴夫指出的,documentation說:...。 「A'\ n'字符寫在最後,除非打印語句以逗號結尾。」

+4

文檔:http://docs.python.org/reference/simple_stmts.html#grammar-token-print_stmt。 「A'\ n'字符寫在最後,除非打印語句以逗號結尾。」 –

+0

我現在明白了.....順便說一句python在單行表達式中可以像我的第二個例子那樣行嗎?它忽略了這個表達嗎? – lamwaiman1988

+0

表達式是一個有效的語句。如果不是,則無法在沒有額外語法的情況下調用函數。 –

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

相關問題