摘要:上一講,主要介紹了用表達(dá)的一種輸出格式化表達(dá)式。現(xiàn)在我們就格式化方法做一個(gè)詳細(xì)一點(diǎn)的交代。關(guān)于格式化表達(dá)式和格式化方法,有的人進(jìn)行了不少比較,有的人說用這個(gè),有的人傾向用那個(gè)。不過,有人傳說格式化表達(dá)式可能在將來某個(gè)版本中廢除。
上一講,主要介紹了用%表達(dá)的一種輸出格式化表達(dá)式。在那一講最后又拓展了一點(diǎn)東西,拓展的那點(diǎn),名曰:格式化方法。因?yàn)樗R(shí)上是使用了str的format方法。
現(xiàn)在我們就格式化方法做一個(gè)詳細(xì)一點(diǎn)的交代。
基本的操作所謂格式化方法,就是可以先建立一個(gè)輸出字符串的模板,然后用format來填充模板的內(nèi)容。
>>> #先做一個(gè)字符串模板 >>> template = "My name is {0}. My website is {1}. I am writing {2}." >>> #用format依次對(duì)應(yīng)模板中的序號(hào)內(nèi)容 >>> template.format("qiwsir","qiwsir.github.io","python") "My name is qiwsir. My website is qiwsir.github.io. I am writing python."
當(dāng)然,上面的操作如果你要這樣做,也是可以的:
>>> "My name is {0}. My website is {1}. I am writing {2}.".format("qiwsir","qiwsir.github.io","python") "My name is qiwsir. My website is qiwsir.github.io. I am writing python."
這些,跟用%寫的表達(dá)式?jīng)]有什么太大的區(qū)別。不過看官別著急,一般小孩子都區(qū)別不到,長(zhǎng)大了才有區(qū)別的。慢慢看,慢慢實(shí)驗(yàn)。
除了可以按照對(duì)應(yīng)順序(類似占位符了)填充模板中的位置之外,還能這樣,用關(guān)鍵字來指明所應(yīng)該田中的內(nèi)容。
>>> template = "My name is {name}. My website is {site}" >>> template.format(site="qiwsir.github.io", name="qiwsir") "My name is qiwsir. My website is qiwsir.github.io"
關(guān)鍵詞所指定的內(nèi)容,也不一定非是str,其它的數(shù)據(jù)類型也可以。此外,關(guān)鍵詞和前面的位置編號(hào),還可以混用。比如:
>>> "{number} is in {all}. {0} are my number.".format("seven",number=7,all=[1,2,3,4,5,6,7,8,9,0]) "7 is in [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]. seven are my number."
是不是開始感覺有點(diǎn)意思了?看輸出結(jié)果,就知道,經(jīng)過format方法得到是一個(gè)新的str。
序列對(duì)象的偏移量有這樣一個(gè)要求:在輸出中,顯示出一個(gè)單詞的第一個(gè)字母和第三個(gè)個(gè)字母。比如單詞python,要告訴看官,第一字母是p,第三個(gè)字母是t。
這個(gè)問題并不難。實(shí)現(xiàn)方法也不少,這里主要是要展示一下偏移量在format中的應(yīng)用。
>>> template = "First={0[0]}, Third={0[2]}" >>> template.format(word) "First=p, Third=t"
list也是序列類型的,其偏移量也可。
>>> word_lst = list(word) >>> word_lst ["p", "y", "t", "h", "o", "n"] >>> template "First={0[0]}, Third={0[2]}" >>> template.format(word_lst) "First=p, Third=t"
對(duì)上面的綜合一下,稍微啰嗦一點(diǎn)的實(shí)驗(yàn):
>>> template = "The word is {0}, Its first is {0[0]}. Another word is {1}, Its second is {1[1]}." >>> template.format("python","learn") "The word is python, Its first is p. Another word is learn, Its second is e." >>> "{name}"s first is {name[0]}".format(name="qiwsir") #指定關(guān)鍵詞的值的偏移量 "qiwsir"s first is q"
值得注意的是,偏移量在序列類型的數(shù)據(jù)中,因?yàn)榭梢允秦?fù)數(shù),即能夠從右邊開始計(jì)數(shù)。
>>> word "python" >>> word[-1] "n" >>> word[-2] "o"
但是,在模板中,無(wú)法使用負(fù)數(shù)的偏移量。
>>> "First={0[0]}, End={0[-1]}".format(word) #報(bào)錯(cuò) Traceback (most recent call last): File "", line 1, in TypeError: string indices must be integers, not str >>> "First={0[0]}, End={0[5]}".format(word) #把-1改為5就可以了。 "First=p, End=n"
當(dāng)然,放到模板外面是完全可行的。這樣就好了:
>>> "First={0}, End={1}".format(word[0],word[-1]) "First=p, End=n"dictionary的鍵
直接上實(shí)驗(yàn),先觀察,再得結(jié)論
>>> myinfo {"website": "qiwsir.github.io", "name": "qiwsir", "room": 703} >>> template = "I am {0[name]}" >>> template.format(myinfo) "I am qiwsir" >>> template = "I am {0[name]}. My QQ is {qq}" >>> template.format(myinfo,qq="26066913") "I am qiwsir. My QQ is 26066913"
位置后面跟鍵,就能得到format的參數(shù)中字典的鍵對(duì)應(yīng)的值。太羅嗦了吧,看例子就明白了。出了根據(jù)位置得到,還能夠根據(jù)關(guān)鍵詞得到:
>>> myinfo {"website": "qiwsir.github.io", "name": "qiwsir", "room": 703} >>> "my website is {info[website]}, and I like {0}".format("python",info=myinfo) #關(guān)鍵詞info引用的是一個(gè)字典 "my website is qiwsir.github.io, and I like python"模板中添加屬性
看標(biāo)題不懂在說什么。那就看實(shí)驗(yàn)吧。
>>> import math >>> "PI is {PI.pi}".format(PI=math) "PI is 3.14159265359"
這是用關(guān)鍵詞,下面換個(gè)稍微復(fù)雜點(diǎn),用位置的。
>>> import sys,math >>> "PI is {0.pi}. My lptop runs {1.platform}".format(math,sys) "PI is 3.14159265359. My lptop runs linux2"
看官理解了吧。
其它進(jìn)制在這個(gè)世界上的數(shù)學(xué)領(lǐng)域,除了有我們常常用到的十進(jìn)制、十二進(jìn)制(幾點(diǎn)了,這是你我常用到的,鐘表面就是12進(jìn)制)、六十進(jìn)制(這個(gè)你也熟悉的)外,還有別的進(jìn)制,比如二進(jìn)制、八進(jìn)制、十六進(jìn)制等等。此處不談進(jìn)制問題,有興趣詳細(xì)了解,請(qǐng)各自google。不過,進(jìn)制的確在計(jì)算機(jī)上很重要的。因?yàn)闄C(jī)器在最底層是用二進(jìn)制的。
這里只是說明一下輸出時(shí)候的進(jìn)制問題。
>>> "{0:X}, {1:o}, {2:b}".format(255,255,255) "FF, 377, 11111111"
X:十六進(jìn)制,Hex
o:八進(jìn)制,octal
b:二進(jìn)制,binary
順便補(bǔ)充,對(duì)于數(shù)的格式化方法輸出和格式化表達(dá)式一樣,就不贅述了。
在格式化方法中,還能夠指定字符寬度,左右對(duì)齊等簡(jiǎn)單排版格式,不過,在我的經(jīng)驗(yàn)中,這些似乎用的不怎么多。如果看官需要,可以google或者到官方文檔看看即可。
關(guān)于格式化表達(dá)式和格式化方法,有的人進(jìn)行了不少比較,有的人說用這個(gè),有的人傾向用那個(gè)。我的建議是,你用哪個(gè)順手就用哪個(gè)。切忌門派之見呀。不過,有人傳說格式化表達(dá)式可能在將來某個(gè)版本中廢除。那是將來的事情,將來再說好了。現(xiàn)在,你就撿著順手的用吧。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/37349.html
摘要:萊布尼茲所指的函數(shù)現(xiàn)在被稱作可導(dǎo)函數(shù),數(shù)學(xué)家之外的普通人一般接觸到的函數(shù)即屬此類。中文的函數(shù)一詞由清朝數(shù)學(xué)家李善蘭譯出。前面提供的維基百科中的函數(shù)詞條,里面可以做一個(gè)概覽。 函數(shù),對(duì)于人類來講,能夠發(fā)展到這個(gè)數(shù)學(xué)思維層次,是一個(gè)飛躍。可以說,它的提出,直接加快了現(xiàn)代科技和社會(huì)的發(fā)展,不論是現(xiàn)代的任何科技門類,乃至于經(jīng)濟(jì)學(xué)、政治學(xué)、社會(huì)學(xué)等,都已經(jīng)普遍使用函數(shù)。 下面一段來自維基百科(...
摘要:字符串格式化的字符串字面值簡(jiǎn)稱為字符串,是在字符串的開始引號(hào)之前加上一個(gè)或。在這樣的字符串中,我們可以在花括號(hào)中引用變量或表達(dá)式。但在中,更推薦使用方法或字符串格式化。 利用print函數(shù)把信息打印到顯示器,是我們編程中經(jīng)常使用的功能。為了讓打印的信息更容易讀懂,就需要更好的格式來打印。Python提供了記住不同的格式化輸出的方法。推薦的方法就是:f-字符串和str.format()函...
摘要:你只需要相信一句話鍵盤敲爛,月薪過萬(wàn)就行了,進(jìn)入正文,零基礎(chǔ)入門知識(shí)點(diǎn)大綱如下其實(shí)到目前為止,的崗位需求還是非常多的,還是大多數(shù)企業(yè)后臺(tái)開發(fā)的主流編程語(yǔ)言,功能強(qiáng)大,還是很值得學(xué)習(xí)的。 ...
摘要:在學(xué)習(xí)語(yǔ)句的時(shí)候,對(duì)編程的基礎(chǔ)知識(shí)了解的還不是很多,或許沒有做什么太復(fù)雜的東西。可以通過一個(gè)內(nèi)置函數(shù)來判斷一個(gè)條件的結(jié)果還是。有朋友需要看完整教程內(nèi)容,請(qǐng)點(diǎn)擊零基礎(chǔ)學(xué),這里會(huì)及時(shí)更新,并且有完整的目錄結(jié)構(gòu),更吸納了朋友們提出的意見和建議。 看官是否記得,在上一部分的時(shí)候,有一講專門介紹if語(yǔ)句的:從if開始語(yǔ)句的征程。在學(xué)習(xí)if語(yǔ)句的時(shí)候,對(duì)python編程的基礎(chǔ)知識(shí)了解的還不是很多,...
摘要:語(yǔ)句,遍列列表字符串字典集合等迭代器,依次處理迭代器中的每個(gè)元素。與配合使用處理在程序運(yùn)行中出現(xiàn)的異常情況。表示此行為空,不運(yùn)行任何操作。在迭代器函數(shù)內(nèi)使用,用于返回一個(gè)元素。恭請(qǐng)到上瀏覽及時(shí)更新的教程零基礎(chǔ)學(xué) 小孩子剛剛開始學(xué)說話的時(shí)候,常常是一個(gè)字一個(gè)字地開始學(xué),比如學(xué)說餃子,對(duì)他/她來講,似乎有點(diǎn)難度,大人也聰明,于是就簡(jiǎn)化了,用餃餃來代替,其實(shí)就是讓孩子學(xué)會(huì)一個(gè)字就能表達(dá)。當(dāng)然...
閱讀 2888·2021-11-17 09:33
閱讀 3661·2021-11-16 11:42
閱讀 3488·2021-10-26 09:50
閱讀 1316·2021-09-22 15:49
閱讀 3045·2021-08-10 09:44
閱讀 3669·2019-08-29 18:36
閱讀 3924·2019-08-29 16:43
閱讀 2207·2019-08-29 14:10