一、讓print()函數不換行
在Python中,print()函數預設是換行的。但是,在很多情況下,我們需要不換行的輸出(比如在演算法競賽中)。那麼,在Python中如何做到這一點呢?
其實很簡單。只要指定print()函數的end參數為空白就可以了。(預設是’\n’)
例如:
1 print('hello world', end='')2 print('!!!')
輸出為:
二、print()函數淺析
當然,print()函數不止有end這個參數,還有其它幾個參數。下面我們來看一看這些參數對輸出分別起到什麼作用。
先來看一下print()函數的原型:
print
(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
以下摘自官方文檔:
Print objects to the text stream file, separated by sep and followed by end. sep, end, file and flush, if present, must be given as keyword arguments.
All non-keyword arguments are converted to strings like str() does and written to the stream, separated by sep and followed by end. Both sep and end must be strings; they can also be None, which means to use the default values. If no objects are given, print() will just write end.
The file argument must be an object with a write(string) method; if it is not present or None, sys.stdout will be used. Since printed arguments are converted to text strings, print() cannot be used with binary mode file objects. For these, use file.write(...) instead.
Whether output is buffered is usually determined by file, but if the flush keyword argument is true, the stream is forcibly flushed.
Changed in version 3.3: Added the flush keyword argument.
也就是說,print()將objects轉換成strings輸出到流中,用sep分隔,以end結束。
下面通過幾個例子,來具體的看一看print()函數各參數的作用。
第一個參數objects就不多說了,要是不知道幹啥的可以考慮從頭學起。
第二個參數sep,表示objects參數串連時使用的字元,預設是空格。
1 print('hello', 'world', sep='*')
輸出為:
第三個參數end,表示輸出完後的結束符,預設是換行。例子前面有了。
第四個參數file,表示輸出到哪裡,預設是sys.stdout。必須是file-like對象,即有write方法,不可以用二進位模式。
1 f = open('print.txt', 'w')2 print('hello', 'world', file=f)
程式運行結束後,開啟檔案可以看到:
第五個參數flush,表示是否立即輸出到file所指定的對象中。當為True時,立即輸出,當為False時,則取決於file對象(一般是不立即輸出)。
上面的例子,如果加個暫停,可以發現,資料沒有被立即寫入,只有在f.close()後才被寫入。如果沒有寫f.close(),那就在程式運行結束以後寫入。
1 f = open('print.txt', 'w')2 print('hello', 'world', file=f)3 s = input('f.close()? (Y/N)')4 if s == 'Y':5 f.close()
如果flush為True時,則會被立即寫入。
1 f = open('print.txt', 'w')2 print('hello', 'world', file=f, flush=True)3 s = input('f.close()? (Y/N)')4 if s == 'Y':5 f.close()
以上就是對Python中print()函數的淺析,鑒於本人的水平有限,有不妥之處,還請指出。
1 #!/usr/bin/env python3 2 # -*- coding: utf-8 -*- 3 4 # 不換行 5 print('hello world', end='') 6 print('!!!') 7 8 f = open('print.txt', 'w') 9 f1 = open('print1.txt', 'w')10 11 print('hello', 'world')12 print('hello', 'world', sep='*')13 print('hello', 'world', file=f)14 print('hello', 'world', file=f1, flush=True)15 16 s = input('f.close()? (Y/N)')17 if s == 'Y':18 f.close()19 20 # 如果輸入為N,此處暫停觀察print.txt中的內容是否為空白21 s = input()