[python] f ‘{{{74}}}’와 f-String의 f ‘{{74}}’이 (가) 동일한 이유는 무엇입니까?

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}'


답변