Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 17. diel - Dekorátory v Pythone

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Jakub Ježek
Člen
Avatar
Jakub Ježek:4.1.2024 19:47

Mohu se prosím zeptat?
obalena_funkce() je vnitřní funkce, která "obaluje" dekorovanou funkci a přidává k ní nové chování. Když je tato funkce volána, vypíše zprávu před spuštěním dekorované funkce func() a další zprávu po jejím dokončení
Proč se funkce která něco obaluje, jmenuje "obalena_funkce"? Nebylo by logičtější, kdyby se jmenovala "obalujici_funkce"? Nebo jsem to špatně pochopil?

Avatar
Karel Zaoral
Člen
Avatar
Odpovedá na Jakub Ježek
Karel Zaoral:4.1.2024 19:57

Ahoj Jakube, bylo by to logičtější. O víkendu to upravím, díky!

Avatar
Dušan Kovářík:22.1.2024 22:19

Velmi zajímavé téma a určitě ne snadno vysvětlitelné. Nicméně, kdybych si jinde nedohledal, jak v Pythonu fungují vnitřní funkce a nedozvěděl se o tzv. uzávěrech (closures), nepochopil bych, jak dekorátory fungují "pod pokličkou". Poznámka ke konci lekce - funkce vypocitej() v ukázce kódu nic nevrací, pouze vypisuje - tím pádem i přiřazování výsledku do proměnné vysledek a její vracení v příkazech return je zde zbytečné.

Editované
Avatar
Odpovedá na Karel Zaoral
Lenka Chalupová:27.2.2024 14:32

Nezapomněl jste to opravit? Protože já to stále vidím a mate mě to stejně jako Jakuba..

Avatar
Radek Schlosser:27.2.2024 23:29

Špatně není nic, jen chci napsat komentář :-)

Tak tohle dalo celkem zabrat, ale nakonec jsem si uvědomil, že je tato konstrukce logická a naráz se to zdá jednoduché. Ve skutečnosti jsem už někdy v průběhu čtení a testování vše pochopil správně, ale pak jsem zase několikrát zaváhal. Po přečtení posledního odstavce jsem si definivně ověřil, že to chápu správně.

Díky za vysvětlení! Radek

Avatar
Lenka M.
Člen
Avatar
Lenka M.:1.5.2024 7:57

Mohla bych se prosím zeptat?
Jedné funkci můžeme přiřadit více dekorátorů. Mluvíme pak o vícenásobném dekorování. Dekorátory se aplikují ve vrstvách, přičemž první dekorátor, který je aplikován, je ten nejblíže funkci. Poslední dekorátor je ten, který se nachází nejvýše.
Zdroj: https://www.itnetwork.cz/…ry-v-pythonu

@validuj_vstup
@zmer_cas
@vypocet_objemu_krychle
def obsah_ctverce(a):
    time.sleep(1)  # na sekundu zdržíme běh programu, jinak je tak rychlý, že bychom dostali čas běhu nulový.
    return a**2

obsah_ctverce(3)

hned za příkladem je poté napsáno:
Prvním dekorátorem, který se aplikuje, je @validuj_vstup,kt­erý obaluje funkci obsah_ctverce().
Zdroj: https://www.itnetwork.cz/…ry-v-pythonu

vypocet_objemu_krychle(z­mer_cas(validuj_vstup(ob­sah_ctverce)))(3)

pokud to zkouším správně .... nemělo by to být v tomto případě:
validuj_vstup(zm­er_cas(vypocet_ob­jemu_krychle(ob­sah_ctverce)))(3) ?

Když to zkouším takto tak vyjde i výsledek ve stejném pořadí...
nebo jsem to jen špatně pochopila?

Editované
Avatar
Odpovedá na Lenka M.
Anna Drahotová:9.5.2024 23:20

Z toho jsem také zmatená. Přijde mi, že si věty odporují

  • ** -první dekorátor, který je aplikován, je ten nejblíže funkci. Poslední dekorátor je ten, který se nachází nejvýše**.
  • **Je tedy důležité si uvědomit, že dekorátory se spouštějí v sestupném pořadí shora dolů.

**

Editované
Avatar
Lenka M.
Člen
Avatar
Odpovedá na Anna Drahotová
Lenka M.:10.5.2024 13:04

Ahoj.
To si podle me neodporuje.. oni se spousti ze shora dolu ale apilikuji se ze sdola nahoru... ( Neboli prvni se spusti ten nahore.. .. ale vysledek dostaneme prvni od toho nejnize....) , nebo aspon jsem to takhle pochopila...
Ale stale si myslim ze si odporuji ty dva priklady...

Avatar
Odpovedá na Lenka M.
Anna Drahotová:10.5.2024 16:16

Díky. V neděli jdu na školení, snad to pak pochopím

Avatar
Lukáš Libovický:21.6.2024 9:17

Úplně jsem z textu nepochopil jak přesně funguje předávání argumentů pomocí *args a **kwargs
Když jsem si to potom zkoušel tak jsem to snad pochopil, ale zatím první lekce kde jsem se zasekl a něco nepochopil

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 29.