LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Python (6.) - Funkce

Opět podobně jako v jiných imperativních jazycích můžeme v Pythonu definovat funkce, ovšem Python nám nabízí několik vlastností navíc.

11.1.2005 15:00 | Aleš Hakl | Články autora | přečteno 25431×

Funkce je pojmenovaný úsek programu, který můžeme z jiné části programu zavolat jeho jménem, v Pythonu funkci definujeme nějak takto:

def jméno(parametry):
  tělo funkce

Nejjednodušší funkce může vypadat nějak takto:

def hello_world():
  print "Bagr plave"

Funkce samozřejmě může mít parametry, tyto uvedeme do závorek oddělené čárkami:

def plave(kdo,cem):
  print kdo + " plave po "+cem

Jak už je z předchozího příkladu patrné, parametry jsou uvnitř funkce přístupné stejně jako proměnné.

Funkce samozřejmě může mít nějakou návratovou hodnotu, na kterou se její volání vyhodnotí (proto se jmenuje funkce ^_~). Takovou návratovou hodnotu z funkce vrátíme pomocí klíčového slova return.

def sqrt(x):
  epsilon = 0.0001 # pozadovana presnost
  g = 1.0
  while abs(g ** 2 - x) > epsilon:
      g = (g + x / g)/2
  return g

Ovšem tím možnosti parametrů funkcí v Pythonu nekončí. Parametrům můžeme pomocí symbolu = přiřadit výchozí hodnotu.

def plave(kdo,cem="vltave"):
  print kdo + " plave po "+cem

Pokud takto výchozí hodnotu přiřadíme, nemusíme funkci předávat všechny její parametry, musíme předat pouze ty, které výchozí hodnotu nemají:

>>> plave("bagr")
bagr plave po vltave

Parametry nemusíme předávat ve stejném pořadí, jako jsou uvedeny v definici funkce. Pomocí symbolu = můžeme při konkrétním volání toto pořadí změnit:

>>> plave(cem="labi", kdo="parnik")
parnik plave po labi

Pokud při definování funkce bude poslední poziční parametr začínat znakem *, bude do takového parametru přiřazeno pole obsahující všechny zbývající poziční parametry.

Podobně pokud poslední parametr funkce bude začínat **, přiřadí do něj Python při volání funkce slovník obsahující všechny parametry zadané názvem, jejichž název neodpovídá žádnému běžnému parametru.

def funkce(*pozicni, **slovnikove):
  print "pozicni: ", pozicni
  print "slovnikove: ", slovnikove
>>> funkce(1,2,3, a="abraka", d="dabra")
pozicni:  (1, 2, 3)
slovnikove:  {'a': 'abraka', 'd': 'dabra'}

Tuto syntaxi je možné použít i obráceně, pro volání funkce:

>>> a = ("bagr", "vltave") 
>>> plave(*a);
bagr plave po vltave
>>> p = (1, 2, 3)

>>> s = {'a': 'abraka', 'd': 'dabra'}
>>> funkce(*p,**s)
pozicni:  (1, 2, 3)
slovnikove:  {'a': 'abraka', 'd': 'dabra'}

Python dále zavádí klíčové slovo lambda, pomocí kterého je možné definovat takzvanou anonymní funkci. V pojetí Pythonu narážíme na několik omezení, za nejzávažnější můžeme považovat, že taková funkce smí obsahovat pouze jeden výraz, žádné složitější programátorské konstrukce.

>>> f = lambda x,y: x+y

>>> f(1,1)
2

Všechny funkce se po své definici chovají jako téměř běžné proměnné, nejzajímavější vlastností z toho vyplývající je, že je můžeme předávat jiným funkcím jako parametry:

def vyhovuje(s, f):
  for i in s:
    if f(i):
      print i

Obdobně můžeme definovat funkci, která vrací funkci:

def delitelne(n):
  return lambda x: x % n == 0

Příště se podíváme na objektové programování v Pythonu, definování tříd, dědičnost a základní zajímavá rozhraní.

Verze pro tisk

pridej.cz

 

DISKUZE

Parametry předávané odkazem 23.11.2007 13:35 Mintaka




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

13.9.2017 8:00 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt – tentokrát netradičně v pondělí: 18. září od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

3.9.2017 20:45 /Redakce Linuxsoft.cz
PR: Dne 21. září 2017 proběhne v Praze konference "Mobilní řešení pro business". Hlavní tématy konference budou: nejnovější trendy v oblasti mobilních řešení pro firmy, efektivní využití mobilních zařízení, bezpečnostní rizika a řešení pro jejich omezení, správa mobilních zařízení ve firmách a další.
Přidat komentář

15.5.2017 23:50 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

15.4.2017 15:20 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě IoT a radiokomunikace? Přijď na sraz spolku OpenAlt, který se bude konat ve středu 19. dubna od 18:30 v Šenkovně (Sokolská 60, Praha 2).
Přidat komentář

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

18.9.2017 14:37 / Rojas
high security vault

15.9.2017 7:33 / Wilson
new zealand childcare jobs

31.8.2017 12:11 / Jaromir Obr
Re: ukůládání dat ze souboru

30.7.2017 11:12 / Jaromir Obr
Národní znaky

27.7.2017 12:24 / Jaromir Obr
Cteni/zapis

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze