Programování

The Ultimate Python Beginner’s Guide

30. října 2021

Obsah

  • Nastavení prostředí
    • Nastavení místního prostředí
    • Jak získat Python
    • Jak nainstalovat Python
    • Instalace systému Windows
    • Instalace Unix/Linux
    • Instalace MAC
    • Nastavení cesty pro Python
    • Nastavení cesty pro Unix/Linux
    • Nastavení cesty pro Windows
  • Proměnné prostředí Pythonu
    • Spuštění Pythonu
  • Základní syntaxe
    • Python identifikátory
    • Příkaz Pythonu
    • Odrážky v Pythonu
    • Komentáře v Pythonu
    • Získávání vstupu
    • Zobrazte výstup
  • Typy proměnných
    • Přiřazení hodnot proměnným
    • Datové typy Pythonu
    • Struny
    • N-tice
    • Seznamy
    • čísla
  • Základní operátoři
    • Operátor přiřazení
    • Bitový operátor
    • Logický operátor
    • Aritmetický operátor
    • Porovnávací operátor
    • Operátor identity
    • Provozovatel členství
  • Rozhodování
    • Pokud prohlášení
    • pokud-jinak
    • Vnořeno pokud
    • If-elif-else-ladder
    • Zkratka if prohlášení
    • Zkratka if-others prohlášení
  • Smyčky
    • Zatímco smyčka
    • Pro Loop
    • Vnořené smyčky
    • Příkazy řízení smyčky
    • Pokračovat v prohlášení
    • Break prohlášení
    • Předat prohlášení
  • čísla
    • Převod typu čísla
    • Funkce náhodných čísel
    • Goniometrické funkce
    • Matematické funkce
  • Struny
    • Vytvoření řetězce
    • Řetězcové speciální operátory
    • Operátory formátování řetězců
    • Únikové postavy
    • Vestavěné řetězcové metody
  • N-tice
    • Přístup k hodnotám v nicích
    • Aktualizace n-tic
    • Základní n-ticové operátory
    • Vestavěné funkce Tuple
    • Indexování a krájení
    • Odstranění n-tice
  • Seznamy
    • Přístup k hodnotám v seznamech
    • Aktualizace seznamů
    • Základní operátory seznamu
    • Vestavěný seznam funkcí a metod
    • Indexování a krájení
    • Odstranit prvek seznamy
  • Slovník
    • Vytvoření slovníku
    • Přidávání prvků do slovníku
    • Odebrání prvků ze slovníku
    • Slovníkové metody Pythonu
  • Datum a čas
    • Time Tuple
    • Časový modul
    • Modul kalendáře
  • Funkce
    • Jak definovat funkci
    • Volání funkce
    • Předat odkazem
    • Mít hodnotu
    • Argumenty funkce
    • Argumenty s proměnnou délkou
    • Povinné argumenty
    • Výchozí argumenty
    • Argumenty klíčových slov
    • Anonymní funkce
  • Moduly
    • Prohlášení o dovozu
    • Výpis z importu
    • Výpis z importu *
    • Lokalizační moduly
    • Funkce locals() a globals().
    • Jmenné prostory a rozsah
    • Funkce dir().
    • Funkce reload().
  • Soubory I/O
    • Otevření souboru
    • Atributy objektu souboru
    • Zavření souboru
    • S prohlášením
    • Metoda zápisu
    • Metoda čtení
    • Metoda rename().
    • Metoda remove().
    • Pozice souboru
  • Výjimky
    • Co je to výjimka?
    • Zpracování výjimky
    • Vyhlášení výjimky
    • Seznam standardních výjimek
    • Uživatelem definované výjimky
    • Tvrzení v Pythonu
  • Třídy a objekty
  • Programování CGI
    • Procházení webu
    • HTTP hlavička
    • Proměnné prostředí CGI
    • metoda GET
    • metoda POST
    • Používání cookies v CGI
    • Jak to funguje?
  • Přístup k databázi MySQL
    • Vytváření databázové tabulky
    • Operace INSERT
    • Operace READ
    • Operace aktualizace
    • Operace DELETE
    • Provádění transakcí
    • Operace COMMIT
    • Operace ROLLBACK
    • Odpojení databáze
    • Zpracování chyb
  • sítě
    • Co jsou zásuvky?
    • Zásuvkový modul
    • Internetové moduly Python
  • Odesílání e-mailu
    • Odeslání HTML e-mailu pomocí Pythonu
    • Odesílání příloh jako e-mail
  • Vícevláknové programování
    • Zakládání nového vlákna
    • Modul závitování
    • Synchronizace vláken
    • Vícevláknová prioritní fronta
  • Zpracování XML
    • Co je XML?
    • Architektury a API XML Parser
    • Analýza XML pomocí SAX API
      • Metoda make_parser
      • Metoda analýzy
      • Metoda parseString
  • Programování GUI
    • Tkinter widgety
  • Správa geometrie
  • Doporučené články

Třídy a objekty

Python je objektově orientovaný jazyk od té doby, co existoval, a díky tomu se používání a vytváření tříd a objektů stalo jednodušším. Tato kapitola vám pomůže stát se odborníkem na používání podpory objektově orientovaného programování Pythonu.

Pokud nemáte dostatečné znalosti o objektově orientovaném programování, zde je něco, s čím můžete začít.

    Třída− Je to uživatelsky definovaný prototyp objektu, který definuje sadu atributů, které charakterizují jakýkoli objekt třídy. Proměnné třídy a proměnné a metody instance, ke kterým se přistupuje pomocí tečkové notace.Objekt− Jde o instanci datové struktury, která je definována její třídou. Objekt obsahuje jak proměnné třídy, tak proměnné instance.Proměnná třídy− Je to proměnná, kterou sdílejí všechny instance třídy. Proměnná třídy je definována v rámci třídy, ale mimo jakoukoli z metod třídy. Proměnné třídy se nepoužívají jako časté proměnné instance.Datový člen− je to proměnná instance, která uchovává data spojená s třídou a jejími objekty.Proměnná instance− Je to proměnná, která je obvykle definována uvnitř metody a patří k aktuální instanci třídy.Přetížení funkcí− Přiřazení jednoho nebo více chování konkrétní funkci. Prováděná operace se liší podle typů objektů nebo použitých argumentů.Přetížení operátora− Přiřazení jedné nebo více funkcí konkrétnímu operátorovi.Dědictví− Jde o přenos charakteristik třídy na jiné třídy, které jsou z ní odvozeny.Metoda− Je to speciální druh funkce, která je definována v definici třídy.

Vytváření tříd

Třída vytvoří novou definici třídy. Za názvem třídy následuje klíčové slovo class následované dvojtečkou.

SYNTAX

|_+_|
  • Třída se skládá z řetězce dokumentace, ke kterému se přistupuje přes ClassName.__doc__.
  • Sada class_suite se skládá z příkazů komponenty definujících členy třídy, datové atributy a funkce.
img 617dd27284418

Objekty třídy

Objekt je instancí třídy. Třída je jako plán, zatímco je kopií třídy se skutečnými hodnotami.

img 617dd272d3ac5

VÝSTUP

img 617dd273361bc

Přístup k atributům

K atributům objektu můžete přistupovat pomocí operátoru tečka s objektem.

  • getattr(obj, jméno[, výchozí]) − Používá se pro přístup k atributu objektu.
  • hasattr(obj,name) − Používá se ke kontrole, zda atribut existuje nebo ne.
  • setattr(obj,name,value) − Slouží k nastavení atributu. Pokud atribut neexistuje, bude vytvořen.
  • delattr(obj, jméno) −Slouží k odstranění atributu.

Vestavěné atributy třídy

Každá třída Pythonu udržuje následující vestavěné atributy a přistupuje se k nim pomocí operátoru tečka jako ke každému jinému atributu −

    __diktovat__− Je to slovník obsahující jmenný prostor třídy.__doc__− Je to řetězec dokumentace třídy nebo žádný, pokud není definován.__název__− Název třídy.__modul__− Je to název modulu, ve kterém je definována třída. Tento atribut je __main__ v interaktivním režimu.__základy__− Prázdná n-tice, která obsahuje základní třídu v pořadí jejich výskytu v seznamu základních tříd.

Odvoz odpadků

Python automaticky odstraňuje objekty, aby uvolnil místo v paměti. Proces, kterým python periodicky získává zpět bloky paměti, které se již nepoužívají, se nazývá Garbage Collection.

Pythonův garbage collector běží během provádění programu a je spuštěn, když počet odkazů objektu dosáhne nuly.

Počet odkazů objektu se zvýší, když je objektu přiřazen nový název nebo je umístěn do kontejneru (seznamu, n-tice nebo slovníku). Počet referencí objektu se sníží, když je odstraněn pomocí z , jeho odkaz je znovu přiřazen nebo jeho odkaz překračuje rozsah. Když počet odkazů na objekt dosáhne nuly, python je automaticky shromáždí.

img 617dd273789c9

VÝSTUP

img 617dd273c29af

Třídní dědičnost

Třídu můžete také vytvořit jejím odvozením od předchozí třídy uvedením nadřazené třídy v závorkách za názvem nové třídy.

Podřízená třída může zdědit atributy své nadřazené třídy a vy můžete používat funkce, jako by byly definovány v podřízené třídě. Podřízená třída může také přepsat metody a datové členy z nadřazené třídy.

SYNTAX

|_+_|

Převažující metody

Můžete přepsat své rodičovské metody třídy. Důvodem přepsání rodičovských metod je to, že ve své podtřídě můžete chtít jedinečnou nebo odlišnou funkčnost. Zde je několik metod základního přetížení.

Ano ne Metoda Popis
jeden__repr__( sebe )Hodnotitelná řetězcová reprezentace
dva__del__( sebe )Destruktor, odstraní objekt
3__cmp__ (vlastní, x)Objektové srovnání
4__init__ ( vlastní [,args…] )Konstruktor (s libovolnými volitelnými argumenty)
5__str__( sebe )Tisknutelné zobrazení řetězce

Regulární výrazy

Regulární výraz je jedinečná posloupnost znaků, která vám pomáhá najít nebo porovnat sady řetězců pomocí speciální syntaxe obsažené ve vzoru. Regulární výrazy jsou široce používány ve světě UNIX.

Modul Python poskytuje plnou podporu pro regulární výrazy podobné Perlu v Pythonu. Modul vyvolá výjimku.

Funkce zápasu

Pokouší se přiřadit vzor RE k řetězci s volitelnými příznaky.

SYNTAX

|_+_|
Ano ne Parametr Popis
jedenvlajkyUrčuje různé příznaky pomocí bitového OR (|).
dvavzorJe to regulární výraz, který má být spárován.
3tětivaJe to řetězec, který se hledá, aby odpovídal vzoru na začátku řetězce.

Funkce vyhledávání

Hledá první výskyt vzoru RE v řetězci s volitelnými příznaky.

SYNTAX

|_+_|
Ano ne Parametr Popis
jedenvlajkyUrčuje různé příznaky pomocí bitového OR (|).
dvavzorJe to regulární výraz, který má být spárován.
3tětivaJe to řetězec, který se hledá, aby odpovídal vzoru na začátku řetězce.

Modifikátory regulárních výrazů

Ano ne Parametr Popis
jedenre.MTo znamená, že $ odpovídá konci řádku a ^ odpovídá začátku libovolného řádku.
dvare.LInterpretuje slova podle aktuálního národního prostředí. Výklad ovlivňuje abecední skupinu i chování na hranici slova.
3re.UInterpretuje písmena podle znakové sady Unicode. Příznak ovlivňuje chování w, W, , B.
4re.XUmožňuje roztomilejší syntaxi regulárních výrazů. Ignoruje mezery a zachází s neescapovaným # jako se značkou komentáře.
5re.SDíky tomu se tečka shoduje s jakýmkoli znakem, včetně nového řádku.
6re.IProvádí párování bez rozlišení velkých a malých písmen.

Vzory regulárních výrazů

Ano ne Vzor Popis
jeden.Odpovídá jedinému znaku kromě nového řádku.
dvaa| bOdpovídá buď a nebo b.
3[…]Odpovídá jedinému znaku v závorkách.
4[^…]Odpovídá jednomu znaku, který není v závorkách
5$Odpovídá konci řádku.
6^Odpovídá začátku řádku.
7re*Odpovídá 0 nebo více výskytům předchozího výrazu.
8re+Odpovídá jednomu nebo více výskytům předchozího výrazu.
9re?Odpovídá 0 nebo 1 výskytu předchozího výrazu.
10znovu{ n}Odpovídá přesně n počtu výskytů předchozího výrazu.
jedenáctznovu{ n, m}Odpovídá alespoň n a m výskytům předchozího výrazu.
12znovu { n,}Odpovídá n nebo více výskytům předchozího výrazu.
13(re)Seskupuje regulární výrazy a pamatuje si odpovídající text.
14(?imx)Dočasně přepíná možnosti i, m nebo x v regulárním výrazu.
patnáct(?imx: re)Dočasně přepíná možnosti i, m nebo x v závorkách.
16?: re)Seskupuje regulární výrazy, aniž by si pamatoval odpovídající text.
17(?-imx)Dočasně vypne možnosti i, m nebo x v regulárním výrazu.
18(?-imx: re)Dočasně vypne možnosti i, m nebo x v závorkách.
19(?#…)Komentář.
dvacet(?= znovu)Určuje polohu pomocí vzoru. Nemá rozsah.
dvacet jedna(?! znovu)Určuje polohu pomocí negace vzoru. nemá rozsah.
22(?> znovu)Vyhovuje nezávislému vzoru bez backtrackingu.
23VOdpovídá slovním znakům.
24VOdpovídá neslovným znakům.
25SOdpovídá to bez mezer.
26sOdpovídá mezerám.
27DOdpovídá nečíslic.
28dShoduje se s číslicemi. Ekvivalentní [0-9].
2910Odpovídá n-tému seskupenému podvýrazu, pokud se již shoduje. Jinak se odkazuje na osmičkovou reprezentaci znakového kódu.
30NAOdpovídá začátku řetězce.
31SOdpovídá konci řetězce. Pokud nějaký nový řádek existuje, shoduje se těsně před novým řádkem.
32sOdpovídá konci řetězce.
33GOdpovídá bodu, kde skončil poslední zápas.
3. 4 , atd.Odpovídá novým řádkům, návratům vozíku, tabulátorům atd.
35BOdpovídá neslovným hranicím.
361…9Odpovídá n-tému seskupenému podvýrazu.
37V závorkách odpovídá backspace (0x08).

Třídy postav

Ano ne Příklad Popis
jeden[aeiou]Shoduje se s jakoukoli malou samohláskou
dva[0-9]Odpovídá jakékoli číslici; stejné jako [0123456789]
3[Pp] ythonOdpovídá Pythonu nebo pythonu
4[a-z]Odpovídá jakémukoli malému písmenu ASCII
5třít [ty]Odpovídá rubínu nebo rubínu
6[^aeiou]Shoduje se s čímkoli jiným než s malou samohláskou
7[^0-9]Odpovídá čemukoli jinému než číslici
8[a-zA-Z0-9]Odpovídá čemukoli z výše uvedeného
9[A-Z]Odpovídá jakémukoli velkému písmenu ASCII
10.Odpovídá jedinému znaku kromě nového řádku.
jedenáctVOdpovídá slovním znakům.
12VOdpovídá neslovným znakům.
13SOdpovídá to bez mezer.
14sOdpovídá mezerám.
patnáctDOdpovídá nečíslic.
16dShoduje se s číslicemi. Ekvivalentní [0-9].

Případy opakování

Ano ne Příklad Popis
jedenrubín +Odpovídá rub plus 1 nebo více ys
dvarubín*Odpovídá rub plus 0 nebo více ys
3rubín?Odpovídá rub nebo ruby: y je nepovinné
4d{3}Odpovídá přesně 3 číslicím
5d{3,}Odpovídá 3 nebo více číslicím
6d{3,5}Odpovídá 3, 4 nebo 5 číslicím

Kotvy

Ano ne Příklad Popis
jedenPython ZOdpovídá Pythonu na konci řetězce.
dvaPython $Odpovídá Pythonu na konci řetězce nebo řádku.
3^PythonOdpovídá Pythonu na začátku řetězce nebo vnitřní řádky.
4 APythonOdpovídá Pythonu na začátku řetězce.
5Python(?=!)Pokud následuje vykřičník, odpovídá Pythonu.
6Krajta(?!!)Odpovídá Pythonu, pokud není následován vykřičníkem.
7PythonOdpovídá Pythonu na hranici slova.