Python中五個(gè)你不知道的print函數(shù)用法詳解
大家好!今天我們來(lái)聊聊Python里最 “平平無(wú)奇” 卻又無(wú)處不在的print()函數(shù)。
作為Python開(kāi)發(fā)者,我們幾乎每天都在用它,但你真的了解它的所有玩法嗎?
其實(shí)很多時(shí)候,我們只用了它 10% 的功力。
今天,我們就來(lái)扒一扒 print 函數(shù)的“隱秘角落”。
掌握了它的幾個(gè)參數(shù),保證讓你在同事眼中瞬間變身 Python 資深玩家!
1. 基礎(chǔ)玩法:不僅僅是打印一個(gè)字符串
如果你把鼠標(biāo)懸停在 print 函數(shù)上,你會(huì)發(fā)現(xiàn)它的第一個(gè)參數(shù)其實(shí)是 *args(或者叫 *objects)。
那個(gè)星號(hào) * 意味著它是 “貪婪” 的--你可以給它塞進(jìn)一個(gè),甚至無(wú)數(shù)個(gè)對(duì)象。
比如:
# 普通玩家
print("毛肚")
print("鴨腸")
print("雪花肥牛")
# 進(jìn)階玩家:一次性打印多個(gè)
print("毛肚", "鴨腸", "雪花肥牛")
# 輸出:毛肚 鴨腸 雪花肥牛
更酷的是,如果你有一個(gè)列表,你可以直接通過(guò)解包(Unpacking)把它“炸”開(kāi)傳給 print:
hotpot_list = ["蝦滑", "寬粉", "娃娃菜"] print(hotpot_list) # 輸出:['蝦滑', '寬粉', '娃娃菜'] # 加上星號(hào) * 進(jìn)行解包 print(*hotpot_list) # 輸出:蝦滑 寬粉 娃娃菜
加上*號(hào),列表的方括號(hào)沒(méi)了,逗號(hào)也沒(méi)了,直接變成了清爽的空格分隔。
2. 拒絕千篇一律的空格:sep 參數(shù)
細(xì)心的你可能發(fā)現(xiàn)了,上面打印多個(gè)元素時(shí),默認(rèn)是用空格隔開(kāi)的。
如果你想打印一個(gè)日期,或者生成一個(gè) CSV 格式的字符串,空格就顯得很尷尬了。
這時(shí)候,sep(separator 分隔符)參數(shù)閃亮登場(chǎng)。
比如:格式化日期
year = 2026 month = 1 day = 15 # 默認(rèn)情況 print(year, month, day) # 輸出:2026 1 15 (不太好看) # 使用 sep 參數(shù) print(year, month, day, sep="-") # 輸出:2026-1-15 (這就對(duì)了?。?
或者生成一個(gè)豎線分割的標(biāo)題樣式:
print("Python", "Java", "C++", sep=" | ")
# 輸出:Python | Java | C++
只要你愿意,分隔符可以是任何字符,甚至是一段話。
3. 控制結(jié)尾的藝術(shù):end 參數(shù)
默認(rèn)情況下,print 函數(shù)是個(gè)“急性子”,每打印完一次,它都會(huì)自動(dòng)幫我們敲一個(gè)回車換行(\n)。
這就是為什么我們連續(xù)寫(xiě)三個(gè) print,它們會(huì)顯示在三行。
但有時(shí)候,我們想把兩句話連在一起,或者在同一行輸出內(nèi)容,這時(shí)就需要 end 參數(shù)出馬了。
print("兇手其實(shí)是", end="......")
print("管家!")
# 輸出:兇手其實(shí)是......管家!
這樣,兩行代碼的輸出無(wú)縫銜接在了一起。
注意: 如果你把 end 設(shè)置為空字符串或者非換行符,記得在最后適當(dāng)?shù)丶右粋€(gè)換行,否則你的終端提示符可能會(huì)尷尬地?cái)D在文字后面。
4. 偷偷記筆錄:file 參數(shù)
這是很多初學(xué)者最容易忽略的參數(shù)。
print 默認(rèn)是將內(nèi)容輸出到 sys.stdout(也就是你的屏幕/控制臺(tái)),但其實(shí),它完全可以把內(nèi)容“打印”到文件里。
這就相當(dāng)于你自己寫(xiě)了一個(gè)迷你版的日志記錄器(Logger),非常適合快速調(diào)試或記錄腳本運(yùn)行結(jié)果。
# 打開(kāi)一個(gè)文件用于追加內(nèi)容
with open("摸魚(yú)日志.txt", "a", encoding="utf-8") as f:
print("10:00 - 喝了一杯咖啡", file=f)
print("10:30 - 刷了一會(huì)兒推特", file=f)
print("11:00 - 盯著屏幕發(fā)呆", file=f)
print("日志記錄完畢,請(qǐng)查看 摸魚(yú)日志.txt")
運(yùn)行完這段代碼,控制臺(tái)只會(huì)顯示最后一句提示,而你的 “摸魚(yú)記錄” 已經(jīng)悄悄保存在了 txt 文件里。
雖然對(duì)于大型項(xiàng)目我們推薦用 logging 模塊,但在這個(gè)腳本寫(xiě)的小工具里,用 file 參數(shù)簡(jiǎn)直不要太方便。
5. 拒絕卡頓,實(shí)時(shí)刷新:flush 參數(shù)
最后這個(gè)參數(shù) flush,常常讓新手摸不著頭腦。
計(jì)算機(jī)為了效率,通常會(huì)有 “緩沖區(qū)” 的概念。
當(dāng)你 print 東西時(shí),它不一定會(huì)立刻顯示在屏幕上,而是攢夠了一波再一起吐出來(lái)(特別是當(dāng)你沒(méi)有換行的時(shí)候)。
這會(huì)導(dǎo)致有時(shí)候你寫(xiě)了代碼,屏幕卻像卡死了一樣半天沒(méi)反應(yīng)。
如果你想做一個(gè)倒計(jì)時(shí)或者進(jìn)度條,就需要將 flush 設(shè)置為 True,強(qiáng)制計(jì)算機(jī):“別攢了,立刻給我顯示出來(lái)!”
import time
print("正在入侵系統(tǒng)", end="")
for i in range(5):
print(".", end="", flush=True) # 關(guān)鍵在這里!
time.sleep(0.5)
print("\n入侵成功!")
如果你不加 flush=True,你可能會(huì)發(fā)現(xiàn)屏幕卡頓了 2.5 秒,然后一次性蹦出五個(gè)點(diǎn)。
加上之后,你就能看到那種 “嘟...嘟...嘟...” 的動(dòng)態(tài)加載效果了。
6. 總結(jié)
雖然在 90% 的日常開(kāi)發(fā)中,我們只需要最簡(jiǎn)單的 print(x),但編程的樂(lè)趣往往隱藏在剩下的 10% 里。
*args:讓你可以一次打印多個(gè)寶貝,或者解包列表。sep:讓你自定義元素之間的膠水。end:讓你控制話有沒(méi)有說(shuō)完(換不換行)。file:讓你把話悄悄說(shuō)給文件聽(tīng)。flush:讓你拒絕延遲,即刻兌現(xiàn)。
掌握了這些,下次有機(jī)會(huì)就給同事露一手!
到此這篇關(guān)于Python中五個(gè)你不知道的print函數(shù)用法詳解的文章就介紹到這了,更多相關(guān)Python print函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python代理抓取并驗(yàn)證使用多線程實(shí)現(xiàn)
這里沒(méi)有使用隊(duì)列只是采用多線程分發(fā)對(duì)代理量不大的網(wǎng)頁(yè)還行但是幾百幾千性能就很差了,感興趣的朋友可以了解下,希望對(duì)你有所幫助2013-05-05
Python編程中用close()方法關(guān)閉文件的教程
這篇文章主要介紹了Python編程中用close()方法關(guān)閉文件的教程,是Python編程入門中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05
pytorch 數(shù)據(jù)預(yù)加載的實(shí)現(xiàn)示例
在PyTorch中,數(shù)據(jù)加載和預(yù)處理是深度學(xué)習(xí)中非常重要的一部分,本文主要介紹了pytorch 數(shù)據(jù)預(yù)加載的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12
用Python將一個(gè)列表分割成小列表的實(shí)例講解
今天小編就為大家分享一篇用Python將一個(gè)列表分割成小列表的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
python調(diào)用Matplotlib繪制分布點(diǎn)圖
這篇文章主要為大家詳細(xì)介紹了python調(diào)用Matplotlib繪制分布點(diǎn)圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
python入門字符串拼接\截取\轉(zhuǎn)數(shù)字理解學(xué)習(xí)
本篇內(nèi)容我們主要講有關(guān)Python字符串的用法,包括字符串的拼接、字符串怎么轉(zhuǎn)數(shù)字、字符串的格式化、字符串函數(shù)等內(nèi)容,有需要的朋友可以借鑒參考下2021-09-09
在django admin中配置搜索域是一個(gè)外鍵時(shí)的處理方法
這篇文章主要介紹了在django admin中配置搜索域是一個(gè)外鍵時(shí)的處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
基于python實(shí)現(xiàn)rpc遠(yuǎn)程過(guò)程調(diào)用
本文主要介紹了基于python實(shí)現(xiàn)rpc遠(yuǎn)程過(guò)程調(diào)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
利用python獲取當(dāng)前日期前后N天或N月日期的方法示例
最近在工作中遇到一個(gè)需求,查找資料發(fā)現(xiàn)了一個(gè)很好的時(shí)間組件,所以下面這篇文章主要給大家介紹了關(guān)于利用python獲取當(dāng)前日期前后N天或N月日期的方法示例,需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2017-07-07

