Nauč se Python > Kurzy > Začátečnický kurz PyLadies > Chyby a rekurze > Šablony (formátovací řetězce)

Šablony (formátovací řetězce)

Řekněme, že chceš vypsat určitou hodnotu uživatelovi s nějakou „omáčkou“ okolo. Dá se na to použít print(), kterému můžeš předat „mix“ řetězců a čísel:

>>> soucet = 3 + 4
>>> print('Součet je', soucet)

Co ale když chceš celý tento výpis uložit do proměnné – jako jeden řetězec? Čárka tu fungovat nebude, ta odděluje argumenty ve volání funkce. Je potřeba soucet převést na řetězec a ten pak připojit k „omáčce“:

>>> hlaska = 'Součet je ' + str(soucet)

To ale není tak přehledné, jak by mohlo. Lze to zpřehlednit použitím šablony.

Takovou šablonu si představ jako formulář s vynechanými místy:

Součet je __________.

Složitější šablona by byla třeba tahle:

Mil[ý/á] _______,
Váš výsledek je __________.

S pozdravem,
_________

Aby Python věděl, do kterého vynechaného místa co doplnit, je potřeba jednotlivá vynechaná místa ve formuláři nějak jednoznačně označit. Použijme jména v „kudrnatých“ závorkách:

Součet je {soucet}.
Mil{y_a} {osloveni},
Váš výsledek je {soucet}.

S pozdravem,
{podpis}.

Takovou šablonu můžeš použít jako formátovací řetězec (angl. formatted string literal, zkráceně f-string). Jako jakýkoli jiný řetězec ji vlož do uvozovek. A aby bylo jasné že jde o šablonu, před první uvozovky dej značku f.

f"Součet je {soucet}."

Takový formátovací řetězec jde použít v Pythonu – jako jakýkoli jiný řetězec:

soucet = 3 + 4
hlaska = f'Součet je {soucet}'
print(hlaska)
y_a = 'á'
osloveni = 'Anežko'
soucet = 3 + 4
podpis = 'Váš Program'

print(f"""
Mil{y_a} {osloveni},
Váš výsledek je {soucet}.

S pozdravem,
{podpis}
""")

A nakonec – v šabloně můžeš použít nejen jména proměnných, ale jakékoli výrazy.

>>> hlaska = f'Součet je {3 + 4}'

Ale nepřežeň to! Většinou je program přehlednější, když si každou vypisovanou hodnotu zvlášť pojmenuješ – tedy uložíš do vhodně pojmenované proměnné.


Toto je stránka lekce z kurzu, který probíhá nebo proběhl naživo s instruktorem. Přejít na stejnou lekci v kurzu pro samouky.