python中return和printf的区别_Python格式化输出:%s和format()用法比较
1、python格式化輸出歷史起源
python2.5之前,我們使用的是老式格式化輸出:%s。從python3.0開始起(python2.6同期發(fā)布),同時支持兩個版本的格式化,多出來的一個新版本就是利用format()函數(shù),進(jìn)行格式化輸出。
2、為什么要學(xué)習(xí)python3支持的新式格式化輸出呢?
雖然老式的語法,兼容性很好,但是它的功能很少,很難完成復(fù)雜的任務(wù),而format()函數(shù)進(jìn)行格式化輸出,功能更加強大,從下面的學(xué)習(xí)中你會慢慢體會到。01基本用法
a?=?'%s張飛%s關(guān)羽%s劉備%s趙云'?%?(1,2,3,4)
display(a)
b??=?'{}張飛{}關(guān)羽{}劉備{}趙云'.format(1,2,3,4)
display(b)
結(jié)果如下:
1)format()支持位置格式化填充,%s不支持;第一種方式:
大括號{ }中寫的是format()傳入值所對應(yīng)的下標(biāo)。
第二種方式:
大括號{ }中的變量,和format()傳入值是一一對應(yīng)的。#?--------------------方式一-----------------------
c?=?'{3}張飛{1}關(guān)羽{2}劉備{0}趙云'.format(1,2,3,4)
display(c)
#?--------------------方式二-----------------------
def?my_hobbies(fruit,ball,drink):
hobbies?=?'我喜歡水果{fruit},我也喜歡球類{ball},我還喜歡飲料{drink}'.format(ball=ball,fruit=fruit,drink=drink)
return?hobbies
fruit?=?'apple'
ball?=?'basketball'
drink?=?'milk'
my_hobbies(fruit,ball,drink)
#?--------------------方式二-----------------------
fruit?=?'apple'
ball?=?'basketball'
drink?=?'milk'
hobbies?=?'我喜歡水果{fruit},我也喜歡球類{ball},我還喜歡飲料{drink}'.format(ball=ball,fruit=fruit,drink=drink)
display(hobbies)
結(jié)果如下:
02填充和對齊
1)填充(只能用一個字符進(jìn)行填充)
① 什么是填充?概念:當(dāng)指定了字符串最終的長度,但是現(xiàn)有的字符串沒有那么長,那么我們就用某種字符(填充字符)來填滿至這個長度,這就是“填充”。
② %s:實現(xiàn)填充功能;
a?=?'%s'?%?('張飛')
display(a)
b?=?'%10s'?%?('張飛')
display(b)
結(jié)果如下:
③ format():實現(xiàn)填充功能;c?=?'{}'.format('張飛')
display(c)
d?=?'{:10}'.format('張飛')
display(d)
結(jié)果如下:
總結(jié)如下:通過上述案例結(jié)果呈現(xiàn),當(dāng)使用的是%s,進(jìn)行字符串填充的時候,默認(rèn)是在原字符串左側(cè)進(jìn)行填充;當(dāng)使用的是format(),進(jìn)行字符串填充的時候,默認(rèn)是在原字符串右側(cè)進(jìn)行填充。這就是我們下面要講述的'對齊'。
2)對齊
① 什么是對齊?概念:'對齊'要與'填充'一起使用,才會顯得有意義。當(dāng)我們進(jìn)行填充的時候,我們可以選擇只在字符串左側(cè)填充,也可以選擇只在字符串右側(cè)填充,還可以選擇在字符串兩側(cè)填充(字符串居中顯示的填充方式)。
② %s:實現(xiàn)對齊功能,只有左對齊和右對齊;
#?左填充
a?=?'%10s'?%?('張飛')
display(a)
#?右填充
b?=?'%-10s'?%?('張飛')
display(b)
結(jié)果如下:
③ format():實現(xiàn)對齊功能,不僅有左對齊和右對齊,還有居中對齊;#?左填充
a?=?':>10'.format('張飛')
display(a)
#?右填充
b?=?':<10'.format('張飛')
display(b)
#?居中填充
c?=?':^10'.format('張飛')
display(c)
結(jié)果如下:
④ 使用'特定符號'進(jìn)行填充;舊版語法中(%s),使用'特定符號'填充,很麻煩,不直接,你也不用去管。
這里主要看新版語法中(format()函數(shù)),進(jìn)行'特定符號'填充。
03截斷
概念:如果我們指定的'截斷長度',比實際給出的'字符串'的長度要短,會發(fā)生截斷。
1)長度和截斷長度的區(qū)別
① 什么是長度?
“{:8}”.format(“xishi is beautiful”)中,這個8表示的是填充長度,又成為長度,當(dāng)字符串長度小于這個長度8的時候,會發(fā)生填充;當(dāng)字符串長度大于這個長度8的時候,長度無效,返回的仍然是原來的字符串。
操作如下:
a?=?'{:8}'.format('xishi')
display(a)
b?=?'{:8}'.format('xishi?is?beautiful')
display(b)
結(jié)果如下:
② 什么是截斷長度?
“{:10.8}”.format(“xishi is beautiful”)中,這個'.8'叫做截斷長度,這個10叫做填充長度。
注意:只有字符串的長度大于這個階段長度的時候,才會發(fā)生截斷。當(dāng)既有截斷長度,又有填充長度的時候一般先進(jìn)行截斷,截斷后再進(jìn)行填充。
操作如下:a?=?'{:.8}'.format('xishi?is?beautiful')
display(a)
#?當(dāng)字符串長度,小于截斷長度,返回原始字符串,截斷長度無效;
b?=?'{:.8}'.format('abc')
display(b)
結(jié)果如下:
③ 填充長度和截斷長度的聯(lián)合使用
a?=?'{:*>15.8}'.format('xishi?is?beautiful')
display(a)
結(jié)果如下:
注意:當(dāng)既有截斷長度,又有填充長度的時候一般先進(jìn)行截斷,截斷后,再進(jìn)行填充。
④ 使用%s完成截斷a?=?'%.8s'?%?('xishi?is?beautiful')
display(a)
b?=?'%15.8s'?%?('xishi?is?beautiful')
display(b)
結(jié)果如下:
04格式化輸出中,與數(shù)字相關(guān)的語法
1)引入案例
a?=?'{}-{}'.format('1','2')
display(a)
b?=?'{}-{}'.format(1,2)
display(b)
結(jié)果如下:
存在的問題:
format()中明明需要傳入字符串,可是這里傳入數(shù)值,卻沒有報錯,這是為什么呢?
原因是:python自動幫我們做了一次隱式轉(zhuǎn)換,但是這種隱式轉(zhuǎn)換是需要代價的,它會消耗額外的性能,犧牲速度。
因此,我們需要用特定的語法去解決這個問題。
2)填充整數(shù),使用d
① 使用%s完成整數(shù)的填充;a?=?'%5d'?%?(3000)
display(a)
b?=?'%d'?%?('3000')
display(b)
結(jié)果如下:
② 使用format()完成整數(shù)的填充;
a?=?'{:$>5d}'.format(3000)
display(a)
b?=?'{:¥>5d}'.format(3000)
display(b)
結(jié)果如下:
3)填充浮點數(shù),使用f(這個才是最常用的,用于保留小數(shù)點的位數(shù));
① 引入案例a?=?'{:f}'.format(3.14159268)
display(a)
b?=?'{:f}'.format(3.1415921)
display(b)
c?=?'{:f}'.format(312)
display(c)
d?=?'{:d}'.format(12,34)
display(d)
結(jié)果如下:
存在的問題:
1)當(dāng)使用的f的時候,不管你傳入的數(shù)字有幾個小數(shù)位,最終都將返回一個六位數(shù)的小數(shù),這個問題源自c語言,你也不用管,自己知道就行。
2)當(dāng)使用f的時候,可以傳入整數(shù);當(dāng)使用d的時候,就只能傳入整數(shù),而不能傳入小數(shù)。
② 使用%s完成浮點數(shù)填充,保留2位有效數(shù)字;
a?=?'%.2f'?%?(3.1415)
display(a)
結(jié)果如下:
③ 使用format()完成浮點數(shù)的填充,保留2位有效數(shù)字;b?=?'{:.2f}'.format(3.1415)
display(b)
c?=?'{:$>5.2f}'.format(3.1415)
display(c)
結(jié)果如下:
注意:在使用浮點數(shù)填充的時候,用的最多的就是保留幾位有效數(shù)字,由于返回值默認(rèn)是保留6位小數(shù),因此需要配合使用'截斷'。作者:黃偉呢,個人博客地址:https://blog.csdn.net/weixin_41261833
公眾號「凹凸玩數(shù)據(jù)」,有趣的不像個技術(shù)號~
總結(jié)
以上是生活随笔為你收集整理的python中return和printf的区别_Python格式化输出:%s和format()用法比较的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bootstrap tabale 点击_
- 下一篇: python测试之道pdf百度云_Pyt