Python3學習筆記 | 十三、Python的語句與語法-列印

  • 2019 年 10 月 6 日
  • 筆記

一、列印簡介

在Python里,列印語句是與文件類型操作相似。在文件操作里,是使用write 方法向打開的文件寫入內容。列印操作是往系統的標準輸出(stdout)流來實現顯示在終端上。 標準輸出流:通常叫stdout,是發送一個程式的文本輸出的默認的地方。與標準輸入流和錯誤流,是在腳本啟動時所創建的3種數據連接流中的一種。 列印操作在Python3.x和Python2.x里有很大區別: Python3.x: 列印是內置函數,用關鍵字參數來表示特定模式。 print不是保留欄位,可以重新賦值。 Python2.x: 列印是語句,擁有自己的特定語句。 print是保留欄位,不能重新賦值

二、Python3.x的print函數

從Python3.0開始print變成了函數,但返回值為None。print函數的格式如下: print([object,…][, sep=』 『][, end=』』][, file=sys.stdout]) 在這裡,object是要列印的內容。object可以是任意對象。默認是沒有。 sep是兩個object之間隔開的字元。默認是一個空格。end是結尾,默認為換行。file為輸出目標,默認為標準輸出流。 下面我們給a,b,c分別賦值數字,字元串,列表後使用如下函數來看結果:

>>> a=15  >>> b='Dora'  >>> c=[1,2,3,4,5]  >>> print(a,b,c,sep='')  153Dora[1, 2, 3, 4, 5]  >>> print(a,b,c,sep=',')  153,Dora,[1, 2, 3, 4, 5]  >>> print(a,b,c,end='')  153 Dora [1, 2, 3, 4, 5]  >>> print(a,b,c,end='');print(a,b,c)  153 Dora [1, 2, 3, 4, 5]153 Dora [1, 2, 3, 4, 5]  >>> print(a,b,c,end='...n')  153 Dora [1, 2, 3, 4, 5]...  >>> print(open(r'C:Test/test.txt'))  <_io.TextIOWrapper name='C:\Test/test.txt' mode='r' encoding='cp936'>

三、列印流重定向

列印流,最終使用的是制定對象的write方法來實現。

print(X, Y)

這個語句等同於:

sys.stdout.write(str(X) + ' ' + str(Y) + 'n')

stdout也可以如下運用:

import sys  sys.stdout = open('log.txt','a')

這樣的話,只要使用print, 整個輸出會重定向到log.txt。 但如上方法會永久的更改sys.stdout的值。這樣之後就不能輸出到shell終端了。 所以得如下操作:

tmp_stdout = sys.stdout  sys.stdout = open('log.txt', 'a')  ....  sys.stdout = tmp_stdout

或者如下使用:

log = open('log.txt', 'a')  print(x, y, file = log)  print(x, y)

具體實現:

>>> import sys  >>> log = open('/tmp/log.txt', 'a')  >>> x = 'This is first linen'  >>> y = 'This is second linen'  >>> print(x, y, file = log)  $ cat /tmp/log.txt  This is first line  This is second line

四、版本獨立的列印

print在Python2.x里也可以使用Python3.x的print函數。

>>> from __future__ import print_function

這樣就能在Python2.x里的所有的print編程方法,而不是語句,之後print也不是保留欄位了。