[Tutor PyCZ] Dalsi problem s Livewires
Petr Prikryl
PrikrylP na skil.cz
Úterý Únor 28 08:46:25 CET 2006
geon
> Tomáš Bělonožník...
> > Ahoj,
> > tak jsem se taky jal vyrabet roboti hru z toho
> > Livewires tutorialu a zasekl jsem se temer
> > na zacatku. Procital jsem si tuhle konferenci a
> > snazil jsem se tedy vyvarovat global. Muj problem
> > je asi v tom, ze [...] dostatecne nerozumim
> > prikazu return, nikde sem ani nenasel nejaky
> > vyklad.
Tomáši, jen tak dál! Ne všichni mají odvahu se zeptat
na věci, které "jsou všem jasné".
> return někdy předčasně, někdy až na konci opuští cyklus
> a vrací jednu nebo několik hodnot. [...]
> > Hrac_telo, xh, yh = posunHrace()
> > TypeError: unpack non-sequence
> [...] return a, b je ve skutečnosti return (a,b),
> takže se vrací tuple, která se samorozbaluje do
> přislušných proměnných.
> [...] S tím return to může být ještě zamotanějsí,
> ale snad to takhle zatím stačí...
GEONE! Není nic horšího, než začátečníkům
říkat, že je to moc složité nebo zamotané. Nic není
složité! Jen se to musí správně rozkouskovat.
Zamotané je často jen naše myšlení. Python
umožňuje jasnější výklady, než mnohé jiné jazyky.
Slovo return pochází z angličtiny [rit@:n, čili delší
temné e]. Znamená jednoduše "návrat". V programování
se jednoznačně používá pro příkaz, který ukončuje
činnost funkce nebo metody a vrací volajícímu nějakou
hodnotu.
Pokud v pythonovské funkci použiji return, činnost
funkce se okamžitě ukončí a volajícímu se vrátí hodnota.
Hodnota může být prázdná (napíšu return bez parametrů),
nebo je konkrétní, jedna. Vrácená hodnota může být
jednoduchého typu (například jedno číslo) nebo může
být trochu složitější.
V Pythonu je to technicky ještě zjednodušeno.
Vrací se vždy jeden odkaz na objekt s hodnotou.
Při použití to ale většinou vypadá, jako kdyby
se vracela jedna hodnota nebo více hodnot. Je to
tím, že se odkaz na objekt s hodnotou automaticky
bere tak, jako kdybychom přímo pracovali s oním
objektem.
Dá se kolem toho hodně slovíčkařit, ale je
to jednoduché. Patří to k oněm problémům,
které se označují jako "AHA!" problémy.
("Vždyť je to tak jasné!")
V literatuře a v dějepise před tabulí něco
obkecáte. Nejsou to předměty natolik přesné,
aby bylo vždy na první pohled jasné, že něco
nevíte a jen tak plácáte. Překladače programovacích
jazyků jsou stroje. Neodpouštějí. Vyžadují přesnost.
Pokud chcete při programování postupovat rychle
kupředu, musíte ve skutečnosti nejdříve postupovat
pomalu. Musíte se snažit dokonale pochopit, co
děláte. Nic vám nesmí zůstat utajeno. Proto zkoušejte
nejdříve jednoduché věci a dokud není něco úplně
jasné, ptejte se. Studenti, kteří se neptají, nejsou
vždy ti, kteří to už umí. Často jsou to ti, kteří
se to nikdy nenaučí.
V programování se používá hodně cizích pojmů.
Snažte se dobře pochopit i je. Často stačí znát
český překlad nebo opis toho pojmu. Tuple je například
to, čemu v češtině říkáme n-tice (dvojice, trojice,
čtveřice, atd.). Nic magického.
pepr
P.S. pro Geona (on už ví). Kde to budeme sbírat?
Další informace o konferenci Tutor