NOVINKA: Pracuj až o 60 % rychleji díky akreditovanému kurzu Specialista na AI. Nyní již od 0 Kč. Zjisti více:

Diskuze – Lekce 18 - Dekorátory podruhé - Parametrické a třídní dekorátory

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Pavel Buřič
DarkCoder:Včera 9:14

Dekorátory v Pythonu jsou speciální funkce, které umožňují modifikovat chování jiné funkce nebo metody – aniž bys musel(a) měnit její zdrojový kód. Jsou to v podstatě "obaly", které přidávají funkcionalitu.

Slouží například k logování, měření výkonu, oprávnění, kešování a další

Odpovědět
Včera 9:14
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Pavel Buřič
DarkCoder:Včera 9:20

Jinak bez dekorátorů se dá úplně v pohodě vyžít. Nejsou povinné ani nezbytné pro běžné programování v Pythonu. Jen existuji místa kde dekorátory pomáhají.. ušetří psaní a zlepší čitelnost a modularitu.

Odpovědět
Včera 9:20
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Odpovídá na DarkCoder
Pavel Buřič :Včera 9:47

Díky za reakci určitě to člověk časem pochopí,ale aktuálně je to alespoň pro mne spíše matoucí

 
Odpovědět
Včera 9:47
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Pavel Buřič
DarkCoder:Včera 10:58

Srovnání:

bez dekorátoru:

import time

def secti(a, b):
    return a + b

start = time.time()
vysledek = secti(5, 7)
end = time.time()

print(f"Výsledek: {vysledek}")
print(f"Doba běhu: {end - start:.6f} sekund")

S dekorátorem:

import time
from functools import wraps

def merit_cas(funkce):
    @wraps(funkce)
    def obal(*args, **kwargs):
        start = time.time()
        vysledek = funkce(*args, **kwargs)
        end = time.time()
        doba = end - start
        return vysledek, doba
    return obal

@merit_cas
def secti(a, b):
    return a + b

vysledek, doba = secti(5, 7)
print(f"Výsledek: {vysledek}")
print(f"Doba běhu: {doba:.6f} sekund")
Odpovědět
Včera 10:58
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 24.