string.templatelib --- 對模板字串字面值的支援¶
模板字串¶
在 3.14 版被加入.
Template strings are a mechanism for custom string processing.
They have the full flexibility of Python's f-string(f 字串),
but return a Template instance that gives access
to the static and interpolated (in curly brackets) parts of a string
before they are combined.
To write a t-string, use a 't' prefix instead of an 'f', like so:
>>> pi = 3.14
>>> t't-strings are new in Python {pi!s}!'
Template(
strings=('t-strings are new in Python ', '!'),
interpolations=(Interpolation(3.14, 'pi', 's', ''),)
)
Types¶
- class string.templatelib.Template¶
The
Templateclass describes the contents of a template string. It is immutable, meaning that attributes of a template cannot be reassigned.The most common way to create a
Templateinstance is to use the template string literal syntax. This syntax is identical to that of f-strings, except that it uses atprefix in place of anf:>>> cheese = 'Red Leicester' >>> template = t"We're fresh out of {cheese}, sir." >>> type(template) <class 'string.templatelib.Template'>
Templates are stored as sequences of literal
stringsand dynamicinterpolations. Avaluesattribute holds the values of the interpolations:>>> cheese = 'Camembert' >>> template = t'Ah! We do have {cheese}.' >>> template.strings ('Ah! We do have ', '.') >>> template.interpolations (Interpolation('Camembert', ...),) >>> template.values ('Camembert',)
The
stringstuple has one more element thaninterpolationsandvalues; the interpolations “belong” between the strings. This may be easier to understand when tuples are alignedtemplate.strings: ('Ah! We do have ', '.') template.values: ( 'Camembert', )
Attributes
- strings: tuple[str, ...]¶
A
tupleof the static strings in the template.>>> cheese = 'Camembert' >>> template = t'Ah! We do have {cheese}.' >>> template.strings ('Ah! We do have ', '.')
Empty strings are included in the tuple:
>>> response = 'We do have ' >>> cheese = 'Camembert' >>> template = t'Ah! {response}{cheese}.' >>> template.strings ('Ah! ', '', '.')
The
stringstuple is never empty, and always contains one more string than theinterpolationsandvaluestuples:>>> t''.strings ('',) >>> t''.values () >>> t'{'cheese'}'.strings ('', '') >>> t'{'cheese'}'.values ('cheese',)
- interpolations: tuple[Interpolation, ...]¶
A
tupleof the interpolations in the template.>>> cheese = 'Camembert' >>> template = t'Ah! We do have {cheese}.' >>> template.interpolations (Interpolation('Camembert', 'cheese', None, ''),)
The
interpolationstuple may be empty and always contains one fewer values than thestringstuple:>>> t'Red Leicester'.interpolations ()