2017-02-12 5 views
1

파이썬에서 숫자를 문자열로 변환하려면 str() 함수를 사용했지만 소수의 사람들이 format()을 대신 사용하도록 제안했습니다. 두 가지 모두 시도해 본 결과 동일한 결과를 얻었습니다.왜 str.format()은 str()보다 나은가요?

n = 10 
print ['{}'.format(n)] # ['10'] 
print [str(n)] # ['10'] 

큰 차이가 있습니까?

답변

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

또한' '{:. {} f}'중에 { '{:. {} f}'형식 (0.12345, 5) -> '0.12345' '형식을 사용할 수 있습니다. , 2) -> 0.12' – Bakuriu

0

나는

내가 str.format()str()보다 더 나은 생각하지 않습니다 .. :-) 내 대답과 함께 대담한 조금있을 것입니다. str()은 더 짧으며, 원하는대로 제공하면 좋을 것입니다.

예를 들어 자릿수로 숫자의 서식을 지정해야하는 경우 {}.format()이 작업을 수행하지만 '%.3f' % n도 작업을 수행합니다.

연산자와 비교할 때 몇 가지 장점이 있으며 반복 인수는 하나이지만 일반적이지 않습니다. 더 짧기 때문에 여전히 %을 사용합니다.

파이썬 자체가 더 나은 방법을 끊임없이 추구하고 있으며 실제로 파이썬 3.6에서 일부 프로그래밍 언어에 공통적 인 최상의 방법 인 IMO가 등장했습니다. 당신은 여기에 대한 자세한 내용을보실 수 있습니다

>>> name = "Fred" 
>>> f"He said his name is {name}." 

:

https://www.python.org/dev/peps/pep-0498/

+0

동의합니다. 저는 여전히 py34에서 use를 사용하지만, 일단 py36을 사용할 수 있다면 f 타입을 사용할 것입니다. cython이 정착하기를 기다리고 있습니다. – Naib

0

이 사람이 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