溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python中format()函數(shù)怎么用

發(fā)布時(shí)間:2021-10-27 13:36:36 來源:億速云 閱讀:172 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下Python中format()函數(shù)怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

    format函數(shù)的調(diào)用

    format函數(shù)可以被直接調(diào)用或在print函數(shù)中以占位符實(shí)現(xiàn)格式化調(diào)用。
    在**2.6**版本前,占位符仍和其他語言一樣使用%(比如C中)。但在其后的版本,format函數(shù)的占位符更改為{}(花括號(hào))。

    優(yōu)化的目的目前總結(jié)出了4個(gè):

    1.花括號(hào)封閉可以實(shí)現(xiàn)更多格式化的實(shí)現(xiàn),更強(qiáng)大的功能

    2.使代碼具有更強(qiáng)的可讀性。

    3.單個(gè)參數(shù)可以多次輸出,參數(shù)順序可以不相同

    4.不需要理會(huì)數(shù)據(jù)類型的問題,在%方法中%s只能替代字符串類型

    好了,進(jìn)入正文,對(duì)于format函數(shù)的使用將分為兩部分。

    1.format函數(shù)及其占位符的調(diào)用格式

    2.占位符格式和參數(shù)設(shè)定

    ps:在介紹的時(shí)候各個(gè)內(nèi)容會(huì)有小小的穿插,其實(shí)是為了更加便于理解~

    format函數(shù)及其占位符的調(diào)用格式

    format函數(shù)可以直接被調(diào)用,比如在shell中直接調(diào)用

    例1

    >>>'{} {}'.format('hello','world')       #占位符不指定順序
    'hello world'
    >>>'{0} {1}'.format('hello','world')       #占位符制定順序
    'hello world'
    >>>'{1} {0}'.format('hello','world')       #換一下順序試試
    'world hello'

    我們更常用的方式是放入print()函數(shù)中進(jìn)行格式化輸出

    例2

    print('{}獲得了S8冠軍'.format('IG')
    #結(jié)果:
    #IG獲得了S8冠軍

    占位符以及參數(shù)設(shè)定

    在第一部分中,簡單地介紹了兩種調(diào)用format函數(shù)的方式??梢院芮逦匕l(fā)現(xiàn),在占位符中也可以輸入一些參數(shù),對(duì)格式化輸出的參數(shù)進(jìn)行設(shè)定,下面就詳細(xì)的介紹占位符中各項(xiàng)參數(shù)的順序和設(shè)置。

    占位符中的各項(xiàng)參數(shù)格式如下所示

    例3(偽代碼)

    '{position/key:fill,align,sign,width,precision,type}'.format(...)

    position/key

    position/key指定了占位符處從format函數(shù)的參數(shù)中調(diào)用哪個(gè)值,position很好理解,比如上面例1中介紹的后兩種調(diào)用,就指定了format中兩個(gè)參數(shù)hello和world在占位符中調(diào)用的順序,注意這個(gè)順序是按照數(shù)組排序中從‘0'開始計(jì)算的。 當(dāng)然,你也可以使用鍵值對(duì)進(jìn)行操作。比如下面的例4:

    例4

    print(
        'the championship of the S8 is {S8}, and for S9, it\'s {S9}.'.format(S8='IG',S9='FPX'))
    #結(jié)果:the championship of the S8 is IG, and for S9, it'FPX.

    有寫小伙伴可能要問了,鍵值對(duì)(字典)的使用在這里有什么好處嗎?感覺還不如填個(gè)數(shù)字來的快捷?。?/p>

    再來看下面這一段代碼:

    例5:

    dic={'S8':'IG','S9':'FPX'}
    print(
        'the championship of the S8 is {S8}, and for S9, it\'s {S9}.'.format(**dic))
    #結(jié)果:the championship of the S8 is IG, and for S9, it'FPX.

    在例5中,有些需要特別說明的地方,首先如果你要在format的括號(hào)里調(diào)用字典,記得在字典名前面加**,也就是字典的函數(shù)調(diào)用方法哦!從例5中應(yīng)該能發(fā)現(xiàn)了,我們不需要在format中專門把字典列出來,而是可以調(diào)用以前定義過的字典,這就使得其具備了重復(fù)調(diào)用的優(yōu)點(diǎn)。想象一下這一點(diǎn)會(huì)有什么不同,這是%方法做不到的哦。

    你也可以用數(shù)組的形式填充,如例6所示:

    例6:

    names=['hilary','vergil','nero']
    places=['chengdu','shijiazhuang','tokyo']
    print(
        'Hi, {names[0]}. I am {names[1]} and this is {names[2]}.'.format(names=names)
        #Hi, hilary. I am vergil and this is nero.

    第一個(gè)位置的參數(shù),也是冒號(hào)前唯一的參數(shù)相信大家就搞明白啦。

    下面的參數(shù)都是并列的,我們一個(gè)一個(gè)說明。首先要講清楚這些參數(shù)如何并列或分隔。

    那就是無需分隔,沒錯(cuò),下面的這些參數(shù),你需要定義哪些就按照順序?qū)懴戮托校挥眉邮裁炊禾?hào)或者空格分開,你可能會(huì)想,這不容易產(chǎn)生歧義嗎?我學(xué)習(xí)的時(shí)候也想過這個(gè)問題,事實(shí)是開發(fā)者編輯函數(shù)邏輯時(shí)就吧這些參數(shù)的設(shè)定值用不會(huì)產(chǎn)生任何歧義的符號(hào)或數(shù)字組合起來了,這一點(diǎn)當(dāng)你使用時(shí)也會(huì)發(fā)現(xiàn)。

    fill參數(shù)

    fill參數(shù)用于指定填充符,默認(rèn)值為空格,實(shí)際經(jīng)驗(yàn)是,很少有場(chǎng)景會(huì)用到這個(gè)參數(shù),除非是按照國際通用的三位一個(gè)逗號(hào)分隔數(shù)字等場(chǎng)景。

    例7:

    >>> print('{:,}'.format(12345678))
    12,345,678

    align參數(shù)

    align參數(shù)用于格式化文本的對(duì)齊方式,當(dāng)你填充了寬度的時(shí)候,這個(gè)參數(shù)的作用是很大的,當(dāng)然,在一句話中無縫的插入一個(gè)格式化文本的話,這個(gè)參數(shù)的設(shè)置就不大有意義了。

    ><^
    右對(duì)齊左對(duì)齊居中對(duì)齊

    例8:

    在shell中運(yùn)行如下代碼(代碼中數(shù)字三十表示寬度,目的是為了拉大總體寬度顯示出對(duì)齊的效果,后文會(huì)提到寬度的使用方法)

    >>> print('{:<30}'.format('pos'))
    pos
    >>> print('{:>30}'.format('pos'))
                               pos
    >>> print('{:^30}'.format('pos'))
                 pos

    sign參數(shù)

    sign參數(shù)用于指定是否保留正負(fù)號(hào),這個(gè)針對(duì)format中數(shù)字起作用。

    +-SPACE
    保留正負(fù)號(hào)僅保留負(fù)號(hào)正數(shù)留空,負(fù)數(shù)保留負(fù)號(hào)

    例9:

    >>> print('{0:+} {0:-} {0: }'.format(123))
    +123 123  123
    >>> print('{0:+} {0:-} {0: }'.format(-123))
    -123 -123 -123

    ps:注意第一行代碼運(yùn)行結(jié)果中最后一個(gè)保留了一個(gè)空格哦

    width參數(shù)

    width參數(shù)控制輸出的長度,經(jīng)過我的測(cè)試,該長度為最小長度,即當(dāng)設(shè)定的width參數(shù)小于format中調(diào)用的值時(shí),不生效;而當(dāng)設(shè)定值大時(shí),會(huì)用空格(默認(rèn))或零進(jìn)行填補(bǔ),如果想要用0進(jìn)行填補(bǔ),那么需要在width前添加0,width參數(shù)的使用如例10所示。在例8中展示對(duì)齊參數(shù)時(shí)也使用了寬度參數(shù),可以看出對(duì)齊是對(duì)我們的填補(bǔ)方式存在影響,其具體影響也在例10中給出。

    例10:

    print('{0:12} {0:05} {0:2}'.format(123)) #依次為12位寬空格填補(bǔ)、5位寬0填補(bǔ)、2位寬
    #結(jié)果:
    #         123 00123 123
    print('{0:<012},{0:>012},{0:^012} '.format(123))
    #結(jié)果:
    #123000000000,000000000123,000012300000 
    print('{0:^012},{1:^012},{0:^011},{1:^011} '.format(123,1234))
    #結(jié)果:
    #000012300000,000012340000,00001230000,00012340000

    可以看出空格的填補(bǔ)同樣以對(duì)齊的區(qū)別顯示出來,但是0的填補(bǔ)卻往往改變了我們數(shù)字的表示,使用時(shí)要注意。另一個(gè)要注意的是當(dāng)你的總寬度和數(shù)據(jù)的有效寬度的奇偶性不同時(shí),居中對(duì)齊的方式會(huì)有不同,這就是例10中第三行代碼希望表達(dá)的意思??梢钥闯?,當(dāng)奇偶次出現(xiàn)不同時(shí),總是偏向左一位對(duì)齊。

    precision參數(shù)

    和%方法中一樣,如%.3f表示保留小數(shù)點(diǎn)三位小數(shù),用【.保留有效數(shù)字位數(shù)(f)】表示數(shù)據(jù)的精確度,如果添加f,則表明保留的為小數(shù)點(diǎn)后位數(shù),如果不加,則表示保留的是有效數(shù)字位數(shù)。例11很好的展示了這種區(qū)別。

    例11:

    print('{0:.2f},{0:.7f},{0:.2},{0:.2%} '.format(123.123456789))
    #結(jié)果:
    #123.12,123.1234568,1.2e+02,12312.35%

    其實(shí)小伙伴們應(yīng)該注意到了,這里的f,%其實(shí)都算是precision參數(shù)后的type參數(shù)控制的內(nèi)容——數(shù)據(jù)類型。因此,我們對(duì)精度簡單介紹,而將precision-type參數(shù)的聯(lián)合參數(shù)具體介紹,因?yàn)槎呔哂泻軓?qiáng)的關(guān)聯(lián)。

    precision-type參數(shù)

    首先介紹所有的type參數(shù),如下表所示:

    type參數(shù)含義
    默認(rèn)十進(jìn)制整數(shù)123
    f浮點(diǎn)數(shù)123.123
    %
    百分比格式12312.3%
    e
    指數(shù)形式1.2e01
    -d十進(jìn)制整數(shù)123
    進(jìn)制轉(zhuǎn)換十進(jìn)制123
    b二進(jìn)制1101111
    o八進(jìn)制157
    x十六進(jìn)制6f
    #x小寫表示的十六進(jìn)制0x6f
    #X大寫表示的十六進(jìn)制0X6F
    c字符,打印前轉(zhuǎn)換為Unicode代碼‘123'

    以上是“Python中format()函數(shù)怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI