要在Python中將數字轉換爲字符串,我使用了str()
函數,但有些人建議我使用format()
來代替。當我兩次都嘗試時,我得到了相同的結果:爲什麼str.format()比str()更好?
n = 10
print ['{}'.format(n)] # ['10']
print [str(n)] # ['10']
是否有任何顯着差異?
要在Python中將數字轉換爲字符串,我使用了str()
函數,但有些人建議我使用format()
來代替。當我兩次都嘗試時,我得到了相同的結果:爲什麼str.format()比str()更好?
n = 10
print ['{}'.format(n)] # ['10']
print [str(n)] # ['10']
是否有任何顯着差異?
雖然str()
會爲您提供數字的默認字符串表示,但您可以指定str.format()
如何格式化。
例子:
>>> '{:.3f}'.format(3.141592653589793) # 3 decimal places
'3.142'
>>> '{:,d}'.format(1234567) # thousand separators
'1,234,567'
>>> '{:6d}'.format(10) # padded to six spaces
' 10'
>>> '{:05.2f}%'.format(8.497) # zero-padded, 2 decimal places
'08.50%'
>>> '{:^6d}'.format(10) # centered
' 10 '
>>> '{:x}'.format(1597463007) # hexadecimal
'5f3759df'
還可以指定涉及多個值的格式字符串:
>>> 'Customer #{cust_id:08d} owes ${bal:,.2f}'.format(bal=1234.5, cust_id=6789)
'Customer #00006789 owes $1,234.50'
有對格式字符串許多不同的選擇 - 在完整參考here。
我會有點我的回答大膽.. :-)
我不認爲str.format()
比str()
更好。 str()
更短,如果它給你你想要的東西,那太棒了。
如果您需要將數字格式化爲數字量,例如{}.format()
可以完成這項工作,但'%.3f' % n
也可以完成這項工作。
{}.format()
與%
運算符相比有一些優點,重複一個參數是一個參數,但不是那麼常見。我仍然使用%
,因爲它更短。
看起來Python本身一直在尋求更好的方法,事實上在Python 3.6中,他們已經提出了迄今爲止最好的方法,即IMO,這對於某些編程語言來說很常見。這裏,它是直接從文檔:
>>> name = "Fred"
>>> f"He said his name is {name}."
你可以閱讀更多關於它:
我同意。我仍然在py34中使用but,但是一旦我可以使用py36,我將使用f類型。只是在等待cython解決 – Naib
這傢伙解釋了str
的format
的許多優點: https://pyformat.info/
但是,如果時間問題,您可能需要使用str
:
>>> import timeit
>>> timeit.timeit('str(25)', number=10000)
0.003485473003820516
>>> timeit.timeit('"{}".format(25)', number=10000)
0.00590304599609226
>>> timeit.timeit('str([2,5])', number=10000)
0.007156646002840716
>>> timeit.timeit('"{}".format([2,5])', number=10000)
0.017119816999183968
您還可以嵌套格式:格式(0.12345,5) - >'0.12345',而格式爲{{。{} f}'。 ,2) - > 0.12' – Bakuriu