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

底層干活的方式不一樣
逗號分隔法就像是讓兩個工人分別干活:一個負(fù)責(zé)輸出字符串“x坐標(biāo):”,另一個負(fù)責(zé)輸出coordinates[0]的值。print函數(shù)接收到多個參數(shù)后,會自動用空格把它們連接起來。
而f-string更像是一個小工廠,先在內(nèi)部把字符串和變量值組裝成一個完整的字符串,然后再把這個成品交給print函數(shù)去輸出。
性能那點(diǎn)事兒
理論上,f-string因?yàn)樘崆巴瓿闪俗址钠唇?,性能會稍微好那么一丟丟。但在大多數(shù)日常場景下,這點(diǎn)差異根本感覺不出來,除非你要在循環(huán)里打印成千上萬次。
代碼風(fēng)格與可讀性
逗號分隔法的代碼看起來更松散,適合打印多個不太相關(guān)的變量:
print("姓名:", name, "年齡:", age, "分?jǐn)?shù):", score)
而f-string讓字符串更完整,更容易閱讀:
print(f"{name}今年{age}歲,考試得了{(lán)score}分")
尤其是需要復(fù)雜格式化的時候,f-string的優(yōu)勢就更明顯了:
# 用f-string格式化數(shù)字和多行字符串
print(f"""
學(xué)生報告:
姓名:{name:>10}
年齡:{age:>10}
分?jǐn)?shù):{score:>8.2f}
""")
什么時候用哪種?
既然兩種方法各有千秋,那什么時候該用誰呢?
用逗號分隔法當(dāng):
- 你只是隨便打印調(diào)試一下,圖個方便
- 需要打印多個不太相關(guān)的變量
- 還在用Python 3.5或更早版本(f-string是3.6才加入的)
用f-string當(dāng):
- 需要把變量嵌入到長字符串中
- 需要對輸出進(jìn)行格式化(比如控制小數(shù)位數(shù)、對齊方式)
- 希望代碼更清晰易讀
- 已經(jīng)在用Python 3.6+
實(shí)際開發(fā)中的小技巧
我在實(shí)際項(xiàng)目中發(fā)現(xiàn),打印調(diào)試信息時經(jīng)常需要同時輸出變量名和值。這時候可以用個小技巧:
# 打印變量名和值(需要Python 3.8+)
print(f"{variable=}") # 會自動輸出“variable=值”
# 對于表達(dá)式也一樣
print(f"{coordinates[0]=}") # coordinates[0]=666
這招在調(diào)試時特別管用,不用寫一堆“變量名:”這樣的字符串了。
總結(jié)一下
回到最初的問題:print("x坐標(biāo):", coordinates[0])和print(f"x坐標(biāo):{coordinates[0]}")有區(qū)別嗎?
表面上看沒區(qū)別,都是把值打印出來。
實(shí)際上有區(qū)別:f-string更靈活、功能更強(qiáng)、有時候性能稍好,而逗號分隔法寫起來更簡單隨意。
所以我的建議是:如果你是臨時打印調(diào)試,怎么方便怎么來;如果是正式代碼,尤其是需要格式化的場景,盡量用f-string,代碼會更清晰易維護(hù)。
不過最重要的是:保持項(xiàng)目中的風(fēng)格一致!別一會兒用這種,一會兒用那種,讓看代碼的人眼花繚亂。
好了,關(guān)于Python打印的那點(diǎn)事兒就聊到這里。希望這篇文章能幫你理清這兩種寫法的區(qū)別,下次寫代碼時能更有意識地選擇合適的方法!
以上就是Python打印值的兩種方式及區(qū)別詳解的詳細(xì)內(nèi)容,更多關(guān)于Python打印值方式的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
tensorflow圖像裁剪進(jìn)行數(shù)據(jù)增強(qiáng)操作
這篇文章主要介紹了tensorflow圖像裁剪進(jìn)行數(shù)據(jù)增強(qiáng)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
Python機(jī)器學(xué)習(xí)利用隨機(jī)森林對特征重要性計算評估
本文是對隨機(jī)森林如何用在特征選擇上做一個簡單的介紹。隨機(jī)森林非常簡單,易于實(shí)現(xiàn),計算開銷也很小,更令人驚奇的是它在分類和回歸上表現(xiàn)出了十分驚人的性能2021-10-10
Python機(jī)器學(xué)習(xí)庫之Scikit-learn基本用法詳解
Scikit-learn?是?Python?中最著名的機(jī)器學(xué)習(xí)庫之一,它提供了大量實(shí)用的機(jī)器學(xué)習(xí)算法以及相關(guān)的工具,可以方便我們進(jìn)行數(shù)據(jù)挖掘和數(shù)據(jù)分析,在這篇文章中,我們將介紹?Scikit-learn?的基本使用,包括如何導(dǎo)入數(shù)據(jù)、預(yù)處理數(shù)據(jù)、選擇和訓(xùn)練模型,以及評估模型的性能2023-07-07
OpenCV實(shí)現(xiàn)圖像平滑處理的方法匯總
這篇文章為大家詳細(xì)介紹了在圖像上面進(jìn)行了圖像均值濾波、方框?yàn)V波 、高斯濾波、中值濾波、雙邊濾波、2D卷積等具體操作的方法,需要的可以參考一下2023-02-02
Python?numpy中np.random.seed()的詳細(xì)用法實(shí)例
在學(xué)習(xí)人工智能時,大量的使用了np.random.seed(),利用隨機(jī)數(shù)種子,使得每次生成的隨機(jī)數(shù)相同,下面這篇文章主要給大家介紹了關(guān)于Python?numpy中np.random.seed()的詳細(xì)用法,需要的朋友可以參考下2022-08-08
Python實(shí)現(xiàn)購物評論文本情感分析操作【基于中文文本挖掘庫snownlp】
這篇文章主要介紹了Python實(shí)現(xiàn)購物評論文本情感分析操作,結(jié)合實(shí)例形式分析了Python使用中文文本挖掘庫snownlp操作中文文本進(jìn)行感情分析的相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下2018-08-08

