Python print函數:如何將對象打印輸出
描述
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.
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- python 特殊屬性及方法詳細解析
- Python 常用的print輸出函數和input輸入函數
- Python基於argparse與ConfigParser庫進行入參解析與ini parser
- python 內置庫wsgiref的使用(WSGI基礎入門)
- Python中使用subprocess庫創建附加進程