Naučíte sa:
- Funkcie v jazyku Python
- Predvolené hodnoty parametrov
- Formátované reťazce (f-stringy)
Vypracujte úlohu
Predstavte si, že pracujete v malej pekárni so sviatočnou ponukou: dva koláčiky dostanete za cenu jedného. Jeden z nich sa rozhodnete darovať ďalšej osobe v rade. Ak poznáte jej meno, poviete:
„Jeden pre Janka, jeden pre mňa.“
Samozrejme, nechcete tú istú vetu opakovať ručne pri každom zákazníkovi. Preto si vytvoríte malý stroj, ktorý to urobí za vás. V Pythone sa takýto stroj nazýva funkcia.
Funkcia je jednoducho znovupoužiteľný kus programu. Keď ju raz vytvoríte, môžete ju zavolať vždy, keď ju budete potrebovať.
def two_fer():
return "Jeden pre teba, jeden pre mňa."
print(two_fer())
Na prvý pohľad sa ani nezdá, že ide o programátorskú úlohu. Napriek tomu sa v nej skrýva niekoľko dôležitých konceptov jazyka Python. Pri jej riešení sa naučíte, čo sú funkcie, aký je rozdiel medzi parametrom a argumentom, ako predvolené hodnoty zvyšujú flexibilitu funkcií a prečo programátori v Pythone radi používajú f-stringy.
Takýto stroj však zakaždým vráti rovnakú vetu. To funguje dovtedy, kým sa prvý zákazník nepredstaví.
Zadanie
Vaším cieľom je napísať funkciu two_fer, ktorá:
-
ak je zadané meno, vráti:
Jeden pre Janka, jeden pre mňa.
-
ak meno zadané nie je, vráti:
Jeden pre teba, jeden pre mňa.
Meno osoby zadávame v tvare, ktorý sa hodí do vety, napríklad Janka, Marienku alebo Ferka.
Argumenty funkcie
Do pekárne vojde Janka. Stroj teraz nemá hovoriť „teba“, ale „Janka“. Funkcia preto musí dostať meno ako vstup. Presne na to slúžia parametre a argumenty funkcie.
Premenná uvedená v zátvorkách pri definovaní funkcie sa nazýva parameter. Môžete si ju predstaviť ako prázdne miesto, ktoré čaká na vyplnenie.
def two_fer(name):
return f"Jeden pre {name}, jeden pre mňa."
Keď funkciu zavoláte napríklad takto:
two_fer("Janka")
hodnota "Janka" sa vloží do parametra name. Táto konkrétna hodnota sa nazýva argument. Parameter teda patrí k definícii funkcie, zatiaľ čo argument odovzdávame funkcii pri jej volaní. Predstavte si parameter ako prázdne políčko vo formulári a argument ako údaj, ktorý doň používateľ zapíše.
Funkcia tak dokáže vytvoriť veľa rôznych viet:
two_fer("Janka") # Jeden pre Janka, jeden pre mňa.
two_fer("Marienku") # Jeden pre Marienku, jeden pre mňa.
Formáttovací reťazec
V predchádzajúcom príklade sme použili formátovaný reťazec, často nazývaný aj f-string:
f"Jeden pre {name}, jeden pre mňa."
Malé písmeno f na začiatku označuje formátovaný reťazec. Python vyhodnotí všetko, čo sa nachádza medzi zloženými zátvorkami {}, a vloží výsledok do textu. V našom prípade teda nahradí {name} menom osoby.
Vo vnútri zložených zátvoriek nemusia byť iba premenné. Môžu tam byť aj výrazy alebo výpočty, napríklad age + 1:
age = 20
print(f"Next year you'll be {age + 1}.")
vypíše:
Next year you'll be 21.
F-stringy sú kratšie a prehľadnejšie než spájanie textu pomocou operátora + alebo používanie staršej metódy .format(). Preto sa dnes často používajú na vytváranie textu v Pythone.
Predvolený argument funkcie
Naša funkcia však zatiaľ funguje iba vtedy, keď meno zadáme. Čo by sa malo stať, ak si niekto vezme koláč bez toho, aby povedal svoje meno?
Ak funkciu zavoláme bez argumentu,
two_fer()
Python oznámi chybu, pretože funkcia očakáva jeden argument, ale žiadny nedostala.
Našťastie môžeme parametru nastaviť predvolenú hodnotu. Táto hodnota sa použije vtedy, keď argument pri volaní funkcie vynecháme:
def two_fer(name="teba"):
return f"Jeden pre {name}, jeden pre mňa."
Teraz sa funkcia správa správne v oboch situáciách. Ak pri volaní zadáme meno, Python použije práve toto meno. Ak meno nezadáme, automaticky použije predvolenú hodnotu "teba".
two_fer("Janka") # Jeden pre Janka, jeden pre mňa.
two_fer() # Jeden pre teba, jeden pre mňa.
Predvolené hodnoty parametrov patria medzi užitočné vlastnosti Pythonu. Umožňujú vytvárať funkcie, ktoré sa jednoducho používajú v bežných situáciách, no zostávajú flexibilné aj vtedy, keď potrebujeme zadať vlastnú hodnotu.