Python?print函數(shù):如何將對(duì)象打印輸出
描述
print函數(shù)是Python的內(nèi)置函數(shù),它會(huì)將對(duì)象的__repr__特殊函數(shù)返回的字符串打印輸出。
默認(rèn)情況下,print函數(shù)調(diào)用底層的sys.stdout.write函數(shù),即往控制臺(tái)打印字符串。
語(yǔ)法
print(*args, sep=' ', end='\n', file=None)
| 名稱 | 說明 | 備注 |
|---|---|---|
| args | 任意類型、任意數(shù)量的參數(shù)。 | 可省略的參數(shù) |
| sep | 當(dāng)args中包含多個(gè)對(duì)象時(shí),中間的分隔符。默認(rèn)情況下是一個(gè)空格。 | 可省略的關(guān)鍵字參數(shù) |
| end | 在args中最后一個(gè)值后附加的字符串,默認(rèn)為換行符。 | 可省略的關(guān)鍵字參數(shù) |
| file | 類文件對(duì)象(流)。默認(rèn)為當(dāng)前sys.stdout。 | 可省略的關(guān)鍵字參數(shù) |
使用示例
打印對(duì)象
常見的Python內(nèi)置類型使用print函數(shù)打印如下所示:
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輸出中都顯得那么通俗易懂。大部分類型在經(jīng)過print輸出時(shí)顯得有些晦澀----它輸出一個(gè)字符串,包含一個(gè)十六進(jìn)制數(shù)表示對(duì)象的內(nèi)存地址。
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關(guān)鍵字參數(shù)用來指定分隔符。默認(rèn)情況下sep是一個(gè)空格,即使用print打印多個(gè)對(duì)象時(shí),對(duì)象和對(duì)象之間用一個(gè)空格來做分隔。我們可以通過傳入關(guān)鍵字參數(shù)sep來定制自己的分隔符:
if __name__ == '__main__':
? ? print("A", "B", "C")
? ? # output: A B C
?
? ? print("A", "B", "C", sep="#")
? ? # output: A#B#C打印到文件
認(rèn)為print函數(shù)只是打印到標(biāo)準(zhǔn)輸出(STDOUT)是一種錯(cuò)誤的看法。print函數(shù)同樣可以將內(nèi)容打印到文件中(功能類似于write函數(shù))。通過關(guān)鍵字參數(shù)file來指定一個(gè)文件,用來將內(nèi)容輸出到文件中。
下面的代碼將創(chuàng)建一個(gè)名為oops.txt的文件,并使用print函數(shù)將字符串"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()設(shè)定結(jié)尾字符串
可選的end參數(shù)可以指定結(jié)尾字符串,默認(rèn)情況下是一個(gè)換行符“\n”,這也是為什么默認(rèn)情況下我們使用print函數(shù)總是在打印完對(duì)象后換行的原因。
我們可以顯式傳入?yún)?shù)來定制自己的結(jié)尾字符串,常用在取消print默認(rèn)換行的場(chǎng)景中:
if __name__ == '__main__': ? ? for i in range(10): ? ? ? ? print(i, end="") ? ? # output: 0123456789
print與__repr__
print函數(shù)中打印每個(gè)對(duì)象所顯示的內(nèi)容,其實(shí)是調(diào)用了該對(duì)象的__repr__方法。
__repr__方法返回一個(gè)字符串,該字符串就是print函數(shù)打印該對(duì)象所顯示的內(nèi)容。
由于__repr__是object類中的方法,因此任何對(duì)象都有__repr__的默認(rèn)實(shí)現(xiàn)。
我們可以通過重寫__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.
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python驗(yàn)證碼截取識(shí)別代碼實(shí)例
這篇文章主要介紹了Python驗(yàn)證碼截取識(shí)別代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
Python編寫通訊錄通過數(shù)據(jù)庫(kù)存儲(chǔ)實(shí)現(xiàn)模糊查詢功能
數(shù)據(jù)庫(kù)存儲(chǔ)通訊錄,要求按姓名/電話號(hào)碼查詢,查詢條件只有一個(gè)輸入入口,自動(dòng)識(shí)別輸入的是姓名還是號(hào)碼,允許模糊查詢。這篇文章主要介紹了Python編寫通訊錄,支持模糊查詢,利用數(shù)據(jù)庫(kù)存儲(chǔ),需要的朋友可以參考下2019-07-07
如何利用Python給自己的頭像加一個(gè)小國(guó)旗(小月餅)
這篇文章主要給大家介紹了關(guān)于如何利用Python給自己的頭像加一個(gè)小國(guó)旗(小月餅)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
利用Python實(shí)現(xiàn)原創(chuàng)工具的Logo與Help
這篇文章主要給大家介紹了關(guān)于如何利用Python實(shí)現(xiàn)原創(chuàng)工具的Logo與Help的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面來一起看看吧2018-12-12
python實(shí)現(xiàn)批量轉(zhuǎn)換文件編碼(批轉(zhuǎn)換編碼示例)
這篇文章主要介紹了python實(shí)現(xiàn)批量轉(zhuǎn)換文件編碼示例,指定文件編碼、目錄或擴(kuò)展名即可進(jìn)行轉(zhuǎn)換,大家參考使用吧2014-01-01
python中Tkinter詳細(xì)基礎(chǔ)教學(xué)實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于python中Tkinter詳細(xì)基礎(chǔ)教學(xué)的相關(guān)資料,文中介紹了如Label、Button、Entry、Text、Frame、Menu、Canvas、Messagebox等的基本屬性和用法,并介紹了布局管理器pack、grid和place的使用方法,需要的朋友可以參考下2024-12-12

