要在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