@@ -82,7 +82,7 @@ Potom následuje odsazené *tělo funkce* – příkazy, které funkce provádí
8282Tělo může začít * dokumentačním řetězcem* (angl. * docstring* ), který popisuje
8383co funkce dělá.
8484To může být jakýkoli řetězec, ale tradičně se uvozuje třemi uvozovkami
85- (i v případě že je jen jednořádkový).
85+ (i v případě, že je jen jednořádkový).
8686
8787Příkazem ` return ` pak můžeš z funkce * vrátit* nějakou hodnotu.
8888
@@ -193,97 +193,3 @@ else:
193193> [ note]
194194> Stejně jako ` if ` nebo ` break ` je ` return ` * příkaz* , ne funkce.
195195> Kolem „své“ hodnoty nepotřebuje závorky.
196-
197-
198- ### Vrátit nebo vypsat?
199-
200- Podívejme se teď na následující program, který vypíše obsah elipsy:
201-
202- ``` python
203- from math import pi
204-
205- def obsah_elipsy (a , b ):
206- return pi * a * b
207-
208- print (' Obsah elipsy s poloosami 3 a 5 je' , obsah_elipsy(3 , 5 ), ' cm2' )
209- ```
210-
211- Takový program se teoreticky dá napsat i s procedurou, tedy funkcí, která nic
212- nevrací.
213- Procedura může výsledek třeba vypsat na obrazovku:
214-
215- ``` python
216- from math import pi
217-
218- def obsah_elipsy (a , b ):
219- print (' Obsah je' , pi * a * b) # Pozor, `print` místo `return`!
220-
221- obsah_elipsy(3 , 5 )
222- ```
223-
224- Program takhle funguje, ale přichází o jednu z hlavních výhod funkcí:
225- možnost vrácenou hodnotu použít i jinak jež jen v ` print ` .
226-
227- Funkci, která * vrací* výsledek, můžeš použít v dalších výpočtech:
228-
229- ``` python
230- def objem_eliptickeho_valce (a , b , vyska ):
231- return obsah_elipsy(a, b) * vyska
232-
233- print (objem_eliptickeho_valce(3 , 5 , 3 ))
234- ```
235-
236- ... ale s procedurou, která výsledek přímo vypíše, by to nešlo.
237- Proto je dobré psát funkce, které spočítané hodnoty vrací,
238- a zpracování výsledku (např. vypsání) nechat na kód mimo funkci.
239-
240- Další důvod proč hodnoty spíš vracet než vypisovat je ten, že jedna funkce se
241- dá použít v různých situacích.
242- Proceduru s ` print ` by nešlo rozumně použít tehdy, když nás příkazová
243- řádka vůbec nezajímá – třeba v grafické hře, webové aplikaci, nebo pro ovládání
244- robota.
245-
246- Podobně je to se vstupem: když použiju v rámci své funkce ` input ` , bude se
247- moje funkce dát použít jen v situacích, kdy je u počítače klávesnice a za ní
248- člověk.
249- Proto je lepší funkcím potřebné informace předávat jako argumenty
250- a volání ` input ` (nebo čtení textového políčka či měření čidlem robota)
251- nemít ve funkci, ale vně, v kódu, který funkci volá:
252-
253- ``` python
254- from math import pi
255-
256- def obsah_elipsy (a , b ):
257- """ Vrátí obsah elipsy s poloosami daných délek"""
258- # Jen samotný výpočet:
259- return pi * a * b
260-
261- # print a input jsou "venku":
262- x = float (input (' Zadej délku poloosy 1: ' ))
263- y = float (input (' Zadej délku poloosy 2: ' ))
264- print (' Obsah je' , obsah_elipsy(x, y))
265- ```
266-
267- Samozřejmě existují výjimky: procedura, která přímo vytváří textový výpis
268- (např. tabulku), může používat ` print ` ; funkce, která načítá textové informace
269- (jako ` ano_nebo_ne ` výše), zase ` input ` .
270- Když ale funkce něco * počítá* , nebo když si nejsi jist{{gnd('ý', 'á')}},
271- je dobré ve funkci ` print ` ani ` input ` nemít.
272-
273-
274- ## None
275-
276- Když funkce neskončí příkazem ` return ` ,
277- automaticky se vrátí hodnota ` None ` .
278-
279- Je to hodnota zabudovaná přímo do Pythonu, podobně jako ` True ` nebo ` False ` ,
280- a znamená „nic“.
281-
282- ``` python
283- def nic ():
284- """ Tahle funkce nic nedělá """
285-
286- print (nic())
287- ```
288-
289- Procedury v Pythonu vracejí právě toto „nic“.
0 commit comments