Python打印值的兩種方式及區(qū)別詳解
前幾天我在幫一個(gè)剛學(xué)Python的朋友看代碼,發(fā)現(xiàn)他打印變量都是print("x坐標(biāo):", coordinates[0])這樣寫(xiě)。我隨口說(shuō)了句“你也可以用f-string啊”,結(jié)果他反問(wèn)我:“這兩種寫(xiě)法有區(qū)別嗎?不就是換個(gè)寫(xiě)法而已?”
哎,這問(wèn)題問(wèn)得真好!表面上都是把值打印出來(lái),但底下確實(shí)有些門(mén)道。今天我就跟大家說(shuō)說(shuō)這兩種打印方式。(PS:對(duì)于初學(xué)者的話(huà))
先看看倆兄弟長(zhǎng)啥樣
# 第一種傳統(tǒng)寫(xiě)法
coordinates = (666, 888)
print("x坐標(biāo):", coordinates[0])
# 第二種f-string寫(xiě)法
print(f"x坐標(biāo):{coordinates[0]}")
運(yùn)行起來(lái),屏幕上都是顯示x坐標(biāo):666;y坐標(biāo):888。看起來(lái)結(jié)果一模一樣,那區(qū)別在哪呢?

底層干活的方式不一樣
逗號(hào)分隔法就像是讓兩個(gè)工人分別干活:一個(gè)負(fù)責(zé)輸出字符串“x坐標(biāo):”,另一個(gè)負(fù)責(zé)輸出coordinates[0]的值。print函數(shù)接收到多個(gè)參數(shù)后,會(huì)自動(dòng)用空格把它們連接起來(lái)。
而f-string更像是一個(gè)小工廠(chǎng),先在內(nèi)部把字符串和變量值組裝成一個(gè)完整的字符串,然后再把這個(gè)成品交給print函數(shù)去輸出。
性能那點(diǎn)事兒
理論上,f-string因?yàn)樘崆巴瓿闪俗址钠唇樱阅軙?huì)稍微好那么一丟丟。但在大多數(shù)日常場(chǎng)景下,這點(diǎn)差異根本感覺(jué)不出來(lái),除非你要在循環(huán)里打印成千上萬(wàn)次。
代碼風(fēng)格與可讀性
逗號(hào)分隔法的代碼看起來(lái)更松散,適合打印多個(gè)不太相關(guān)的變量:
print("姓名:", name, "年齡:", age, "分?jǐn)?shù):", score)
而f-string讓字符串更完整,更容易閱讀:
print(f"{name}今年{age}歲,考試得了{(lán)score}分")
尤其是需要復(fù)雜格式化的時(shí)候,f-string的優(yōu)勢(shì)就更明顯了:
# 用f-string格式化數(shù)字和多行字符串
print(f"""
學(xué)生報(bào)告:
姓名:{name:>10}
年齡:{age:>10}
分?jǐn)?shù):{score:>8.2f}
""")
什么時(shí)候用哪種?
既然兩種方法各有千秋,那什么時(shí)候該用誰(shuí)呢?
用逗號(hào)分隔法當(dāng):
- 你只是隨便打印調(diào)試一下,圖個(gè)方便
- 需要打印多個(gè)不太相關(guān)的變量
- 還在用Python 3.5或更早版本(f-string是3.6才加入的)
用f-string當(dāng):
- 需要把變量嵌入到長(zhǎng)字符串中
- 需要對(duì)輸出進(jìn)行格式化(比如控制小數(shù)位數(shù)、對(duì)齊方式)
- 希望代碼更清晰易讀
- 已經(jīng)在用Python 3.6+
實(shí)際開(kāi)發(fā)中的小技巧
我在實(shí)際項(xiàng)目中發(fā)現(xiàn),打印調(diào)試信息時(shí)經(jīng)常需要同時(shí)輸出變量名和值。這時(shí)候可以用個(gè)小技巧:
# 打印變量名和值(需要Python 3.8+)
print(f"{variable=}") # 會(huì)自動(dòng)輸出“variable=值”
# 對(duì)于表達(dá)式也一樣
print(f"{coordinates[0]=}") # coordinates[0]=666
這招在調(diào)試時(shí)特別管用,不用寫(xiě)一堆“變量名:”這樣的字符串了。
總結(jié)一下
回到最初的問(wèn)題:print("x坐標(biāo):", coordinates[0])和print(f"x坐標(biāo):{coordinates[0]}")有區(qū)別嗎?
表面上看沒(méi)區(qū)別,都是把值打印出來(lái)。
實(shí)際上有區(qū)別:f-string更靈活、功能更強(qiáng)、有時(shí)候性能稍好,而逗號(hào)分隔法寫(xiě)起來(lái)更簡(jiǎn)單隨意。
所以我的建議是:如果你是臨時(shí)打印調(diào)試,怎么方便怎么來(lái);如果是正式代碼,尤其是需要格式化的場(chǎng)景,盡量用f-string,代碼會(huì)更清晰易維護(hù)。
不過(guò)最重要的是:保持項(xiàng)目中的風(fēng)格一致!別一會(huì)兒用這種,一會(huì)兒用那種,讓看代碼的人眼花繚亂。
好了,關(guān)于Python打印的那點(diǎn)事兒就聊到這里。希望這篇文章能幫你理清這兩種寫(xiě)法的區(qū)別,下次寫(xiě)代碼時(shí)能更有意識(shí)地選擇合適的方法!
以上就是Python打印值的兩種方式及區(qū)別詳解的詳細(xì)內(nèi)容,更多關(guān)于Python打印值方式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
DataFrame:通過(guò)SparkSql將scala類(lèi)轉(zhuǎn)為DataFrame的方法
今天小編就為大家分享一篇DataFrame:通過(guò)SparkSql將scala類(lèi)轉(zhuǎn)為DataFrame的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
一文帶你了解Python列表生成式應(yīng)用的八重境界
在Python中有非常多且好用的技巧,其中使用最多的是列表生成式,往往可以將復(fù)雜的邏輯用簡(jiǎn)單的語(yǔ)言來(lái)實(shí)現(xiàn),本文重點(diǎn)介紹列表生成式應(yīng)用的八重境界2022-09-09
PyTorch中tensor[..., 2:4]的實(shí)現(xiàn)示例
本文詳細(xì)探討了PyTorch中tensor[..., 2:4]的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-11-11
Python基礎(chǔ)第三方模塊requests openpyxl
這篇文章主要為大家介紹了Python基礎(chǔ)第三方模塊requests openpyxl使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Python編程實(shí)現(xiàn)雙擊更新所有已安裝python模塊的方法
這篇文章主要介紹了Python編程實(shí)現(xiàn)雙擊更新所有已安裝python模塊的方法,涉及Python針對(duì)模塊操作命令的相關(guān)封裝與調(diào)用技巧,需要的朋友可以參考下2017-06-06
python關(guān)于調(diào)用函數(shù)外的變量實(shí)例
今天小編就為大家分享一篇python關(guān)于調(diào)用函數(shù)外的變量實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
Linux(Redhat)安裝python3.6虛擬環(huán)境(推薦)
這篇文章主要介紹了Linux(Redhat)安裝python3.6虛擬環(huán)境,非常不錯(cuò),具有參考借鑒價(jià)值 ,需要的朋友可以參考下2018-05-05
Python自動(dòng)化測(cè)試selenium指定截圖文件名方法
這篇文章主要介紹了Python自動(dòng)化測(cè)試selenium指定截圖文件名方法,Selenium?支持?Web?瀏覽器的自動(dòng)化,它提供一套測(cè)試函數(shù),用于支持?Web?自動(dòng)化測(cè)試,下文基于python實(shí)現(xiàn)指定截圖文件名方法,需要的小伙伴可以參考一下2022-05-05

