새로운 언어 기능의 복잡성을 감수할 만큼 이 문법적 설탕이 이점이 있는지에 대한 질문이 있음. 두 가지 이유로 이 경우에는 그렇다고 생각함
라이브러리 개발자가 {} 확장을 통해 원하는 것을 할 수 있게 하는 것은 좋은 일이며, 좋은 사용 사례를 만들어낼 가능성이 있음
언어 전반에 걸쳐 템플릿 문법을 일반화하여 모든 라이브러리가 같은 방식으로 문제를 해결하도록 하는 것은 아마도 좋은 일임
또한, 도구 생태계가 t-strings를 지원하도록 적응하기를 바람. 예를 들어, black과 ruff가 t-string 내용을 포맷하고, vscode가 HTML이나 SQL 같은 일반적인 유형의 내용을 색상으로 표시하면 좋겠음
t-strings에 대한 이 견해는 매우 이상함. 템플릿 문자열이 유효한 HTML이나 SQL로 변환되어야 한다는 것을 추론할 수 있는 유일한 방법은 문자열의 명백한 문법을 기반으로 하는 것인데, 이는 임시방편으로만 가능하며 템플릿 문자열 기능과는 관련이 없음
기능이 설계된 방식에서는 문자열 자체에 어떤 유형의 콘텐츠인지 또는 최종적으로 무엇으로 변환될지에 대한 표시가 없음. 모든 것은 변환 함수에 의해 처리됨
다른 사람들이 추가한 것처럼, sql”select * from {table}” 같은 것이 이를 수행할 수 있었겠지만, 템플릿에 있는 것이 변환 함수에 의해 유효한 sql로 변환될 것이라는 보장이 없음. t“give me {table} but only {columns}”가 템플릿이 처리된 후 유효한 sql로 변환될 수 있음
다음과 같은 깔끔한 SQL 문법을 사용할 수 있을까?
city = 'London'
min_age = 21
# Find all users in London who are 21 or older:
users = db.get(t'
SELECT * FROM users
WHERE city={city} AND age>{min_age}
')
db.get() 함수가 템플릿을 수용한다면, 가능할 것임. 지금까지 본 SQL 사용 방법 중 가장 깔끔한 방법일 것임
개인적으로, 이 기능은 일반적인 기능이 되기에는 너무 특정 문제에 집중된 것 같음. Python은 점점 커지고 있음. 사람들이 Python이 배우기 쉽고 간단한지 물어보면 "기본은 그렇지만, 전체 언어를 배우는 것은 그렇지 않음"이라고 말해야 함
이런 점에서 Go는 거의 모든 기능을 거부함으로써 흥미로움. 솔직히 제네릭이 많은 복잡성을 추가하기 때문에 가치가 있는지 확신할 수 없음. 언어를 원래의 초점에 맞추는 일반적인 아이디어가 옳다고 생각함. C++는 언어 자체가 시작했을 때와 거의 닮지 않은 극단적인 경우일 것임
Hacker News 의견
전반적으로, 이 기능은 꽤 멋짐. 기본적으로 다음과 같은 코드를
다음과 같이 바꿈
새로운 언어 기능의 복잡성을 감수할 만큼 이 문법적 설탕이 이점이 있는지에 대한 질문이 있음. 두 가지 이유로 이 경우에는 그렇다고 생각함
또한, 도구 생태계가 t-strings를 지원하도록 적응하기를 바람. 예를 들어, black과 ruff가 t-string 내용을 포맷하고, vscode가 HTML이나 SQL 같은 일반적인 유형의 내용을 색상으로 표시하면 좋겠음
다음과 같은 깔끔한 SQL 문법을 사용할 수 있을까?
db.get() 함수가 템플릿을 수용한다면, 가능할 것임. 지금까지 본 SQL 사용 방법 중 가장 깔끔한 방법일 것임
개인적으로, 이 기능은 일반적인 기능이 되기에는 너무 특정 문제에 집중된 것 같음. Python은 점점 커지고 있음. 사람들이 Python이 배우기 쉽고 간단한지 물어보면 "기본은 그렇지만, 전체 언어를 배우는 것은 그렇지 않음"이라고 말해야 함
큰 토론 (414 포인트, 10일 전, 324개의 댓글) 링크
꽤 멋짐. JS 기능을 포팅한다면 다음에는 딕셔너리 언패킹/디스트럭처링을 얻을 수 있을까?
새로운 x-string 기능이 내장된 것만으로 "속임수"처럼 느껴짐. 다음과 같은 것을 할 수 있다면 멋질 것임
2025년의 Zen of Python:
2025년의 Python 문자열 포맷팅:
템플릿에 적용할 함수를 f-string 변수에 적용하는 것과 어떻게 다른지 이해가 안됨. 그래서 다음과 같은 대신에:
왜 그냥 이렇게 하지 않는지:
아니면 f-string을 만들기 전에. 단순히 정화/문자열 조작 부분을 잊지 않게 하고 강제로 거치게 하는 것인지?
안녕하세요! 제가 이 글을 작성했음 :-)