首頁 > 軟體

Python print函數:如何將物件列印輸出

2022-05-19 13:00:44

描述

print函數是Python的內建函數,它會將物件的__repr__特殊函數返回的字串列印輸出。

預設情況下,print函數呼叫底層的sys.stdout.write函數,即往控制檯列印字串。

語法

print(*args, sep=' ', end='n', file=None)
名稱說明備註
args任意型別、任意數量的引數。可省略的引數
sep當args中包含多個物件時,中間的分隔符。預設情況下是一個空格。可省略的關鍵字引數
end在args中最後一個值後附加的字串,預設為換行符。可省略的關鍵字引數
file類檔案物件(流)。預設為當前sys.stdout。可省略的關鍵字引數

使用範例

列印物件

常見的Python內建型別使用print函數列印如下所示:

if __name__ == '__main__':
    # str
    print("Python")
    # output: python
 
    # bool
    print(True)
    print(False)
    # outputs:
    # True
    # False
 
    # list
    print(['A', "B", "Java", True])
    # output: ['A', 'B', 'Java', True]
 
    # tuple
    print(("Apple", "Orange", "Banana"))
    # output: ('Apple', 'Orange', 'Banana')
 
    # dict
    print({"version.BuildInfo": {"Version": "v3.6.0", "GoVersion": "go1.16.4"}})
    # output: {'version.BuildInfo': {'Version': 'v3.6.0', 'GoVersion': 'go1.16.4'}}
 
    # set
    print({1, 3, 5, 7, 9})
    # output: {1, 3, 5, 7, 9}

可並不是所有的型別在print輸出中都顯得那麼通俗易懂。大部分型別在經過print輸出時顯得有些晦澀----它輸出一個字串,包含一個十六進位制數表示物件的記憶體地址。

from collections import OrderedDict
 
def fun():
    return "fun"
 
if __name__ == '__main__':
    r = OrderedDict()
    print(r)
    # output: OrderedDict()
 
    print(fun)
    # output: <function fun at 0x104d1f0d0>

指定分隔符

可選的sep關鍵字引數用來指定分隔符。預設情況下sep是一個空格,即使用print列印多個物件時,物件和物件之間用一個空格來做分隔。我們可以通過傳入關鍵字引數sep來客製化自己的分隔符:

if __name__ == '__main__':
    print("A", "B", "C")
    # output: A B C
 
    print("A", "B", "C", sep="#")
    # output: A#B#C

列印到檔案

認為print函數只是列印到標準輸出(STDOUT)是一種錯誤的看法。print函數同樣可以將內容列印到檔案中(功能類似於write函數)。通過關鍵字引數file來指定一個檔案,用來將內容輸出到檔案中。

下面的程式碼將建立一個名為oops.txt的檔案,並使用print函數將字串"Oops, I create a file"寫入到該檔案中:

if __name__ == '__main__':
    new_file = open("oops.txt", "w")
    print("Oops, I create a file.", file=new_file)
    new_file.close()

設定結尾字串

可選的end引數可以指定結尾字串,預設情況下是一個換行符“n”,這也是為什麼預設情況下我們使用print函數總是在列印完物件後換行的原因。

我們可以顯式傳入引數來客製化自己的結尾字串,常用在取消print預設換行的場景中:

if __name__ == '__main__':
    for i in range(10):
        print(i, end="")
    # output: 0123456789

print與__repr__

print函數中列印每個物件所顯示的內容,其實是呼叫了該物件的__repr__方法。

__repr__方法返回一個字串,該字串就是print函數列印該物件所顯示的內容。

由於__repr__是object類中的方法,因此任何物件都有__repr__的預設實現。

我們可以通過重寫__repr__方法來客製化我們自己的列印輸出:

class Demo(object):
    def __repr__(self):
        return "I am a Demo object."
 
if __name__ == '__main__':
    d = Demo()
    print(d)
    # output: I am a Demo object.

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com