V dnešním díle se podíváme na poslední části jazyka Python, jenž jsou pro začátek zajímavé, jedná se o příkaz import a tzv. výjimky.
  
		18.2.2005 15:00 | Aleš Hakl | czytane 18946×
   
   
      	RELATED ARTICLES
      
	  KOMENTARZE   
    Omlouvám se za to, že tento díl vychází s takovým spožděním za 
    předchozím, bohužel i moderní taiwanská technika občas zklame ^_~
  
  Příkaz import
  
    Program v jazyce Python může využívat služeb poskytovaných programy v 
    jiných souborech, či kompilovaným kódem napsaným například v jazyce C. 
    Takovémuto úseku kódu v jiném souboru se v terminologii jazyka Python říká 
    modul. Prozatím nám jistě bude stačit vědět, jak v našem programu takový 
    modul použijeme.
  
  
    K načtení modulu ze souborového systému slouží příkaz import:
  
  
  
    Jméno modulu je identifikátor, který označuje modul, jenž se 
    snažíme načíst. Tento název se zapisuje jako běžná proměnná a může 
    obsahovat tečky, které umožňují moduly sdružovat do větších celků, 
    takzvaných balíčků.
  
  
    Příkaz import načte modul do paměti a k jeho obsahu můžeme 
    dále přistupovat tak, že před název proměnné, třídy či funkce
    z něj 
    uvedeme jeho název: 
    jméno_modulu.jméno_proměnné. Pokud nám 
    tento zápis nevyhovuje můžeme použít příkaz:
  
from jméno_modulu import název
    Tento příkaz importuje z daného modulu objekt jménem název tak, že
    tento objekt pak bude dostupný pod názvem název. Místo názvu
    také můžeme uvést znak *, to způsobí že se z modulu zpřístupní
    všechny názvy, které jsou v daném modulu dostupné, další variantou zápisu je, 
    že můžeme uvést seznam názvů oddělených čárkou. Identifikátor za 
    from nemusí být nutně celé jméno modulu, stačí jméno balíčku,
    v tom případě název označuje modul(y) v tomto balíčku, které opět 
    budou dostupné pod zkráceným názvem.
  
  
    Příkaz from...import si zaslouží krátkou zmínku o efektivitě 
    provádění programu, doporučuje se aby název používaný v programu obsahoval
    co nejméně teček (polopaticky řečeno), každá tečka sebou totiž přináší 
    jisté zpomalení programu. Na druhou stranu rychlost provádění programu
    v Pytonu málokdy bývá kritická. Osobně importuji moduly většinou tak,
    že v programu používám pouze poslední část jejich názvu.
  
  
    Tedy:
  
  
  
    Importuje modul time, kterýžto bude dostupný pod názvem 
    time. 
  
  
  
    Importuje modul time tak, že jeho obsah bude z programu 
    dostupný přímo.
  
  from xml.dom.ext.reader import Sax2
    Importuje modul xml.dom.ext.reader.Sax2 pod názvem 
    Sax2. 
  
  
    Za zmínku též jistě stojí, že příkaz import neprovádí to 
    stejné jako stejně pojmenovaný příkaz s podobným významem známý z jazyka 
    Java, který se shodou okolností i dost 
    podobně zapisuje. Věřím tomu, že mnoho programátorů znalých jazyka Java 
    toto bude dlouho mást. 
  
  
    Úmyslně jsem neuvedl, jak takové moduly či balíčky vlastně vypadají, 
    jedná se totiž o poněkud obsáhlejší téma, které si necháme na některý z 
    pozdějších dílů. 
  
  Výjimky
  
    Výjimky jsou způsob jakým se v Pythonu ošetřují chyby. Jedná se o způsob
    jakým lze rozumně zajistit aby na chybu vždy nějak zareagoval, i v 
    případě, že s ní programátor nepočítá, a zároveň aby programátor měl 
    možnost na takovou situaci reagovat po svém a bez velké námahy pokračovat 
    dále ve vykonávání programu. 
  
  
    Za zmínku také stojí, že v Pythonu jsou na 
    několika místech výjimky použity i jako způsob jak z funkce vrátit hodnotu 
    označující stav jako "Žádná další hodnota neexistuje", přestože funkce 
    jinak může vrátit naprosto cokoli, i když takový stav vlastně vůbec není 
    chybou.
  
  
    Výjimka je instance třídy, která popisuje nějaký chybový stav, který
    brání tomu aby program normálně pokračoval v běhu, v případě, že
    je vyvolána výjimka, postupně se vyskakuje z bloků programu, dokud
    se nenajde blok try...except, který tuto výjimku 
    (nebo některou z jejích rodičovských tříd) ošetřuje. Pokud se takový 
    blok nenajde, interpret vypíše chybové hlášení a program skončí.
  
  
    Obecná syntaxe tohoto bloku je:
  
  try:
  kód
except Výjimka0, identifikátor:
  reakce0
except Výjimka1, identifikátor:
  reakce1
.
.
.
    Pokud kód tedy vyvolá nějakou výjimku pro kterou existuje 
    odpovídající except, pokračuje provádění v odpovídajícím bloku 
    reakce, s tím, že výjimka, na kterou reagujeme, je přiřazena
    do proměnné identifikátor(z výše uvedeného to není patrné, ale v 
    různých blocích except může být tento identifikátor 
    samozřejmě různý)
  
  
    Tím jsme určitě neprošli jazyk Python kompletně, ale prošli jsme ho 
    natolik, že se můžeme v dalších dílech zabývat tím, jaké zajímavé funkce 
    a třídy nám rozsáhlá standardní knihovna Pythonu nabízí.