轉(zhuǎn)義技巧與實(shí)戰(zhàn)應(yīng)用)
于編程里頭, 百分號(hào)%屬于一個(gè)特殊符號(hào), 它被用在字符串格式化那兒, 也被用在取模運(yùn)算這兒。好多初學(xué)者當(dāng)碰到要輸出百分號(hào)自身的時(shí)候, 時(shí)常會(huì)感到困惑, 不曉得該怎么正確轉(zhuǎn)義此符號(hào)。本文會(huì)詳細(xì)介紹當(dāng)中轉(zhuǎn)義百分號(hào)的多種辦法, 幫你完全解決這一難題。百分號(hào)在字符串里的角色。百分號(hào)于字符串之內(nèi)占據(jù)著關(guān)鍵位置, 最為常見的情形是用于當(dāng)成格式化操作符來運(yùn)用。在你借助%去實(shí)施字符串格式化之際,百分號(hào)后面的那些字符會(huì)對(duì)相應(yīng)變量按何種方式進(jìn)行格式化產(chǎn)生決定作用。舉例來講, %s所代表的是字符串, %d所代表的是整數(shù), %f所表征的是浮點(diǎn)數(shù)。這般的格式化手段盡管古老, 然而依舊在諸多遺留代碼里被廣泛運(yùn)用。百分號(hào)有格式化功能之外, 還用于取模運(yùn)算, 也就是去計(jì)算兩個(gè)數(shù)相除之后的余數(shù)。這樣運(yùn)算的用法跟字符串格式化全然不一樣, 得依據(jù)上下文來加以區(qū)分。在你編寫代碼之際, 必須要明確百分號(hào)在當(dāng)前所處位置的具體意思。當(dāng)處于字符串字面量里時(shí), 百分號(hào)要是未和格式化字符進(jìn)行配對(duì), 那么就會(huì)把它當(dāng)作普通字符直接去輸出。它跟別的編程語言存在差異, 就像在C語言里, 百分號(hào)得轉(zhuǎn)義成%%, 這樣的處理辦法看上去簡(jiǎn)單, 可在實(shí)際運(yùn)用的時(shí)候卻容易導(dǎo)致錯(cuò)誤。雙百分號(hào)轉(zhuǎn)義方法詳解于字符串里, 若要輸出一個(gè)百分號(hào)模樣的字符, 最為直接的辦法便是運(yùn)用兩個(gè)接連的百分號(hào), 也就是%%。此情形類似C語言里的轉(zhuǎn)義形式, 不過是把它當(dāng)作特殊的語法予以處理。當(dāng)解析器碰到這種%%的時(shí)候, 就會(huì)將其更替成單獨(dú)的一個(gè)百分號(hào)。這些規(guī)則適用于各類字符串, 涵蓋單引號(hào)字符串、雙引號(hào)字符串以及三引號(hào)字符串。不管你采用何種字符串定義方式, %%都能被妥善轉(zhuǎn)義成單個(gè)%, 這般的轉(zhuǎn)義方法格外直觀, 并且易于記憶。在現(xiàn)實(shí)實(shí)施的編碼里面, 雙百分號(hào)進(jìn)行轉(zhuǎn)義的情況常常于格式化字符串那塊出現(xiàn), 比如說, 當(dāng)你期望輸出“完成度95%”這般的文本之際, 能夠撰寫成完成度%d%% % 95。這里頭第一個(gè)%是用來作數(shù)字格式化的, 第二個(gè)%跟前面的%互相組合形成轉(zhuǎn)義序列, 最后輸出一個(gè)百分號(hào)。要留意的是, 雙百分號(hào)轉(zhuǎn)義唯有在字符串字面量里才具備有效性。要是你于注釋或者文檔字符串之中運(yùn)用%, 那么就無需開展任何轉(zhuǎn)義。不過鑒于代碼的一致性以及可讀性, 主張?jiān)谒星樾蜗戮捎靡?guī)范的轉(zhuǎn)義模式。方法轉(zhuǎn)義百分號(hào)提供了另一種處理百分號(hào)的方式的, 是的str.()方法。與%格式化操作符有所不同, 使用大括號(hào){}作為占位符的是該方法, 在其中百分號(hào)不再具備特殊含義。其意味著在這個(gè)方法里, 你能夠直接運(yùn)用百分號(hào)而無需進(jìn)行轉(zhuǎn)義。然而, 方法依舊得去處理百分號(hào)的展現(xiàn)問題, 在你打算輸出含有百分號(hào)的數(shù)字之際, 可以運(yùn)用格式化規(guī)范里的%類型, 比如說{:.1%}.(0.95)會(huì)給出“95.0%”, 于此百分號(hào)被當(dāng)作格式化類型指示符, 意味著把數(shù)字轉(zhuǎn)變成百分比格式。當(dāng)運(yùn)用使用方法之時(shí), 還能夠借由參數(shù)化的辦法靈活地操控百分號(hào)的呈現(xiàn), 你能夠把百分號(hào)當(dāng)作普通字符涵蓋于格式字符串里, 也能夠借助格式化規(guī)范自行生成百分號(hào), 這般的方式要比傳統(tǒng)的%格式化更為明晰且更為靈活。針對(duì)存在頻繁處理百分號(hào)情況的應(yīng)用場(chǎng)景, 推薦采用一種方法, 該方法不但避免了轉(zhuǎn)義方面的問題, 而且還給出了更為強(qiáng)大的格式化功效, 就比如說, 能夠指定保留下來的小數(shù)位數(shù), 還能夠添加千位分隔符等, 正是這些特性致使此方法變成為處理百分號(hào)的首選辦法。f字符串轉(zhuǎn)義百分號(hào)技巧3.6所引入的f字符串, 也就是格式化字符串字面量, 其情形為百分號(hào)轉(zhuǎn)義提供出新的思路, 在f字符串當(dāng)中, 你能夠直接將表達(dá)式嵌入于大括號(hào)內(nèi), 百分號(hào)于表達(dá)式外部依舊維持原有的意義, 這便意味著在f字符串里, 你并不需要針對(duì)百分號(hào)展開特殊轉(zhuǎn)義。不過要留意的是, f字符串當(dāng)中的大括號(hào)有著特殊的意思。要是你打算輸出大括號(hào)自身, 就要靠雙大括號(hào){{和}}來實(shí)施轉(zhuǎn)義。這一點(diǎn)跟百分號(hào)不一樣, 然而同樣關(guān)鍵。在撰寫f字符串時(shí), 得區(qū)分清楚哪些字符要轉(zhuǎn)義, 哪些能夠直接運(yùn)用。于實(shí)際使用情形下, f 字符串去處理百分號(hào)時(shí)的最佳路徑是如此這般, 即將百分號(hào)當(dāng)作一般字符囊括于字符串里, 舉例來講, 便是 f完成度{95}%這般的情況, 它會(huì)徑直展示出“完成度95%”, 在此處百分號(hào)并無任何別具一格的意思, 僅僅是以普通字符的樣式露面。在存在要進(jìn)行動(dòng)態(tài)百分比計(jì)算的狀況下, 能夠于大括號(hào)之內(nèi)做運(yùn)算。比如說, f完成度{/total:.1%}會(huì)自行去進(jìn)行計(jì)算并且格式化百分比數(shù)值。這種辦法把f字符串所具備的簡(jiǎn)潔特征以及格式化規(guī)范所擁有的強(qiáng)大功能給結(jié)合起來了, 這可是處理百分號(hào)最為現(xiàn)代的一種方式。當(dāng)運(yùn)用f字符串之際, 警惕不要在大括號(hào)外面運(yùn)用格式化字符, 不然會(huì)引發(fā)混淆的。