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

