这两段代码的效果是一样的:
from string import Template
template = Template('hi, ${name}')
msg = template.substitute(name=u'张三')
print msg
与
msg = u'hi, {name}'
msg = msg.format(name=u'张三')
print msg
我的问题是, string.Template与str.format谁的历史更久? 为什么会出现功能一样的库呢? 是不是一个是另一个的替代品呢?
PHPz2017-04-18 09:31:24
제 댓글에 %
이라는 주제가 언급되었고, str.format()
공식 문서(str.format - python2)에 다음 구절이 있습니다:
이 문자열 형식 지정 방법은 Python 3의 새로운 표준이며 새 코드의 문자열 형식 지정 작업에 설명된 % 형식 지정보다 선호됩니다.
아마도 다음을 의미할 것입니다:
이 방법은
Python 3
의 새로운 표준이므로 개발자는 문자열 형식을 지정하려면%
대신 먼저 이 방법을 사용해야 합니다. (format
버전을 추가하는 방법2.6
)
그래서 원래 질문에서는 Template
과 format
가 대체인지 여부를 언급했지만 실제 상황은 그 두 사람이 그렇지 않다는 것입니다. format
%
관계자님이 그렇게 말씀하셨으니 앞으로 문자열 포맷팅 작업을 하실 때에는
을 사용하시길 권해드립니다. format
%
원래 답변:
모듈의 클래스이고 Template
은 string
모듈의 내장 함수입니다. 이것이 둘 사이의 근본적인 차이점입니다. format
__buildin__
은 클래스이므로 이를 상속하고 필요에 따라 내용을 다시 작성할 수 있습니다. 예를 들어 기본 구분 기호
로 수정할 수 있습니다.
으아악
$
출력 결과:
이와 마찬가지로 우리가 원하는 것을 더 많이 할 수도 있습니다. 이것이 바로 수업으로서 달성할 수 있는 "개인 맞춤화"입니다.
그리고
의 경우 실제로 적용 범위가 매우 넓습니다. 예시에서 언급한 것 외에도 다음과 같은 용어도 일반적으로 사용됩니다. 으아악 그리고 매우 중요한 패딩 정렬, 정밀도, 심지어 기본 변환까지: format
으아악
와
의 적용 방향은 전혀 다릅니다.巴扎黑2017-04-18 09:31:24
왜 sorted 함수와 list.sort()가 동시에 존재하는지 놀랍지 않나요?
비슷한 기능을 가진 함수는 일반적으로 특별한 응용 시나리오를 대상으로 합니다. 예를 들어, soreted는 반환 값을 가지며 sort는 객체를 직접 변경합니다.
string.Template과 str.format의 경우 string.Template은 이름 그대로 템플릿 정의에 적합하며 나중에 사용할 수 있습니다. 예를 들어 함수나 패키지에서 템플릿을 정의하면 사용할 수 있습니다. 자세한 내용을 알 필요 없이 언제든지 전화로 편리하게 문의하실 수 있습니다. str.format()은 일반적으로 한 줄 표현에 사용되며 사용이 더 유연합니다.