要在python中将数字转换为字符串,我使用了str()
函数,但有些人建议我改用format()
。当我尝试两者时,我得到了相同的结果:
n = 10
print ['{}'.format(n)] # ['10']
print [str(n)] # ['10']
有什么显着差异吗?
答案 0 :(得分:2)
虽然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。
答案 1 :(得分:0)
我的回答会有点大胆......: - )
我认为str.format()
不比str()
好。 str()
更短,如果它能满足您的需求,那就太棒了。
如果您需要使用位数格式化数字,例如,{}.format()
将完成工作,'%.3f' % n
也可以完成工作。
与{}.format()
运算符相比,%
有一些优点,重复一个参数是一个,但不常见。我仍然使用%
,因为它更短。
似乎Python本身不断寻求更好的方法,事实上在Python 3.6中,他们提出了迄今为止最好的方法IMO,这对于某些编程语言来说很常见。在这里,直接来自doc:
>>> name = "Fred"
>>> f"He said his name is {name}."
您可以在此处详细了解:
答案 2 :(得分:0)
这家伙解释了format
优于str
的众多优势:
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