파이썬에서 숫자를 문자열로 변환하려면 str()
함수를 사용했지만 소수의 사람들이 format()
을 대신 사용하도록 제안했습니다. 두 가지 모두 시도해 본 결과 동일한 결과를 얻었습니다.왜 str.format()은 str()보다 나은가요?
n = 10
print ['{}'.format(n)] # ['10']
print [str(n)] # ['10']
큰 차이가 있습니까?
파이썬에서 숫자를 문자열로 변환하려면 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
도 작업을 수행합니다.
연산자와 비교할 때 몇 가지 장점이 있으며 반복 인수는 하나이지만 일반적이지 않습니다. 더 짧기 때문에 여전히 %
을 사용합니다.
파이썬 자체가 더 나은 방법을 끊임없이 추구하고 있으며 실제로 파이썬 3.6에서 일부 프로그래밍 언어에 공통적 인 최상의 방법 인 IMO가 등장했습니다. 당신은 여기에 대한 자세한 내용을보실 수 있습니다
>>> name = "Fred"
>>> f"He said his name is {name}."
:
동의합니다. 저는 여전히 py34에서 use를 사용하지만, 일단 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
또한' '{:. {} f}'중에 { '{:. {} f}'형식 (0.12345, 5) -> '0.12345' '형식을 사용할 수 있습니다. , 2) -> 0.12' – Bakuriu