f-String 은 Python 3.6에서 사용할 수 있으며 문자열 형식에 매우 유용합니다.
>>> n='you'
>>> f'hello {n}, how are you?'
'hello you, how are you?'
Python 3의 f-Strings : 향상된 문자열 형식화 구문 (Guide) 에서 이에 대해 자세히 알아보십시오 . 흥미로운 패턴을 찾았습니다.
삼중 괄호를 사용하면 문자열에 단일 괄호 만있게됩니다.
>>> f"{{{74}}}" '{74}'
그러나 트리플 중괄호를 여러 개 사용하는 경우 더 많은 중괄호를 표시 할 수 있습니다.
>>> f"{{{{74}}}}" '{{74}}'
그리고 이것은 정확히 그렇습니다 :
>>> f'{74}'
'74'
>>> f'{{74}}'
'{74}'
이제 2 {
에서 3으로 전달 하면 결과는 같습니다.
>>> f'{{{74}}}'
'{74}' # same as f'{{74}}' !
따라서 최대 4 개가 필요합니다! {{{{
출력으로 두 개의 괄호를 얻으려면 ( ) :
>>> f'{{{{74}}}}'
'{{74}}'
왜 이런거야? 파이썬이 그 순간부터 여분의 것을 필요로하기 위해 두 개의 중괄호는 어떻게됩니까?
답변
이중 괄호는 괄호를 이스케이프하므로 보간이 발생하지 않습니다 : {{
➝ {
및 }}
➝ }
. 그리고 74
변경되지 않은 문자열로 남아 있습니다 '74'
.
3 중 버팀대를 사용하면 위와 같이 외부 이중 버팀대가 이스케이프됩니다. 반면 내부 괄호는 값의 문자열 보간을 정기적으로 수행합니다 74
.
즉, 문자열 f'{{{74}}}'
은와 동일 f'{{ {74} }}'
하지만 공백이 없습니다 (또는 동등하게 '{' + f'{74}' + '}'
).
숫자 상수를 변수로 대체 할 때의 차이점을 확인할 수 있습니다.
In [1]: x = 74
In [2]: f'{{x}}'
Out[2]: '{x}'
In [3]: f'{{{x}}}'
Out[3]: '{74}'