일부 파일을 생성하기 위해 템플릿 문자열을 사용하고 있으며 다음과 같이 이전 템플릿 코드를 줄이기 위해 이러한 목적으로 새 f- 문자열의 간결함을 좋아합니다.
template_a = "The current name is {name}"
names = ["foo", "bar"]
for name in names:
print (template_a.format(**locals()))
이제이 작업을 수행하여 변수를 직접 대체 할 수 있습니다.
names = ["foo", "bar"]
for name in names:
print (f"The current name is {name}")
그러나 때로는 템플릿을 다른 곳에서 정의하는 것이 합리적입니다. 코드의 더 높은 위치에 있거나 파일 등에서 가져온 것입니다. 이는 템플릿이 서식 태그가 포함 된 정적 문자열임을 의미합니다. 인터프리터에게 문자열을 새로운 f- 문자열로 해석하도록 지시하기 위해 문자열에 어떤 일이 발생해야하지만 그런 것이 있는지 모르겠습니다.
문자열을 가져와 .format(**locals())
호출을 사용하지 않도록 f- 문자열로 해석하는 방법이 있습니까?
이상적으로는 다음과 같이 코딩 할 수 있기를 원합니다 ... ( magic_fstring_function
내가 이해하지 못하는 부분이 들어오는 곳) :
template_a = f"The current name is {name}"
# OR [Ideal2] template_a = magic_fstring_function(open('template.txt').read())
names = ["foo", "bar"]
for name in names:
print (template_a)
...이 원하는 출력으로 (파일을 두 번 읽지 않음) :
The current name is foo
The current name is bar
...하지만 내가 얻는 실제 출력은 다음과 같습니다.
The current name is {name}
The current name is {name}
f
문자열 로는 할 수 없습니다 .f
문자열 데이터 아니며, 그것은 확실히 문자열입니다; 코드입니다. (dis
모듈에서 확인하십시오 .) 나중에 코드를 평가하려면 함수를 사용하십시오.