Hónap: 2023. szeptember

Miért futnak le az osztálydefiníció törzsének utasításai mielőtt példányt hoznánk létre belőle?

Az objektumok a logikailag összetartozó adatokat (amelyek az objektumok állapotát jellemzik), valamint az ezeken műveletet végző hívható objektumokat, azaz metódusokat összerendelik. Ezt hívják egységbe zárásnak (encapsulation). Az azonos típusú objektumoknál a metódusok azonosak, ezért megkülönböztetni egymástól az egyes példányokat az adatattribútumok eltérő értékei alapján lehet. Például a Háromszög típusú objektumok mindegyikére lehet definiálni egy azonos …

Miért futnak le az osztálydefiníció törzsének utasításai mielőtt példányt hoznánk létre belőle? Read More »

Hozzáférhet-e több closure függvény ugyanahhoz a körülzárt lokális változóhoz?

A rövid válasz, hogy igen. Már csak az a kérdés, hogy hogyan. Ez azért merül fel, mert amikor closure-ről van szó, általában egy körülzáró függvénybe (enclosing function) ágyazott egyetlen függvényre gondolunk, ami a körülzáró függvény visszatérési értéke lesz, és ami később a hívása helyén hozzáfér a körülzáró függvény lokális változóihoz. Azonban semmi nem korlátozza azt, …

Hozzáférhet-e több closure függvény ugyanahhoz a körülzárt lokális változóhoz? Read More »

Hogyan tudunk futási időt csökkenteni többlet memória felhasználásával?

Tegyük fel, hogy olyan műveletet kell végezni a programunknak, amely érzékelhető futási idő növekedéssel jár, és ráadásul ezt többször is végre kell hajtani. Ha ez a művelet determinisztikus, vagyis ugyanarra a bemenő adatra vagy kérésre mindig ugyanazt a kimenő adatot, illetve választ adja, akkor alkalmazhatjuk az úgynevezett memoizációt. Ez lényegét tekintve azt jelenti, hogy adott …

Hogyan tudunk futási időt csökkenteni többlet memória felhasználásával? Read More »

Mi a sekély és mély másolás?

Olykor szükségünk lehet objektumok másolatának előállítására. Ez elsőre talán nem tűnik túl izgalmas dolognak. Azonban, ha összetett objektumokról van szó, akkor már vetődnek fel kérdések. Összetett objektumnak tekintjük azt, amely más objektumokat tartalmaz, más szóval rendelkezik azok referenciájával. Ebben az esetben az a kérdés merül fel, hogy a másolás csak a tartalmazó objektumot érinti, vagy …

Mi a sekély és mély másolás? Read More »

Mi a függvénydekorátor és mikor használjuk?

Az előző bejegyzésben említettük, hogy a closure számos alkalmazási köre közül az egyik a dekorátorok előállítása. Függvénydekorátort úgy kapunk, hogy a closure körülzáró függvényének argumentumaként egy függvényobjektumot adunk át. Ez lesz a dekorálandó függvény. Ebben az esetben a closure általános szerkezetének leírása a következő ábra felső részén látható. Ebben a lényeg, hogy a dekorálandó függvényt …

Mi a függvénydekorátor és mikor használjuk? Read More »

Mi a closure és mire használható?

A Pythonban számos alkalmazási formában találkozhatunk closure függvényekkel. Ezen alapulnak például a dekorátorok, amelyek a Python jellegzetes, hasznos, és ezért gyakran használt nyelvi szerkezetei. Az olyan függvényeket, amelyeket egy másik függvényen belül hoztunk létre és e körülzáró függvény visszatérési értékeként kapunk closure függvénynek nevezzük.  Ennek jellemzője nem csak az, hogy egy másik függvényben van definiálva, …

Mi a closure és mire használható? Read More »

Miért célszerű, ha homogén elemű egy lista, és miért lehet heterogén elemű egy tuple konténer?

A Pythonban egy lista, vagyis egy list típusú konténer eleme elvben bármilyen objektum lehet. A lista változtatható konténer, ami azt jelenti, hogy a program futása közben az elemei kicserélhetők, valamint elemszáma növelhető és csökkenthető. Ezzel szemben egy tuple nem változtatható konténer, ezért egy adott példányának létrehozása után annak elemei nem cserélhetők, és elemszáma nem növelhető …

Miért célszerű, ha homogén elemű egy lista, és miért lehet heterogén elemű egy tuple konténer? Read More »

Szótár feltöltésére a dict.setdefault metódus vagy a defaultdict szótár alkalmazása célszerűbb?

Mind a két nyelvi eszköz arra való, hogy ha egy szótárban nincs egy megadott kulcs, akkor ezt a kulcsot automatikusan felveszi a szótárba egy meghatározható alapértelmezett értékkel. Ha d egy dict típusú szótár, akkor a d.setdefault(k, default) híváskor a default argumentum kiértékelődik és, amennyiben nincs a k kulcs a szótárban, az így létrejövő objektum lesz …

Szótár feltöltésére a dict.setdefault metódus vagy a defaultdict szótár alkalmazása célszerűbb? Read More »

Mire figyeljünk, ha egy szótárt dict.fromkeys() metódussal hozunk létre?

Pythonban dict típusú szótárt több módon is létrehozhatunk, amelyek közül egy lehetőség, ha a dict.fromkeys(iterobj, value) metódus hívásával tesszük ezt. Ez akkor hasznos, ha a szótár megalkotásával egyidőben a kulcsokhoz azonos kezdőértéket akarunk beállítani. A metódus első argumentuma egy olyan iterálható objektum, amelynek elemei a szótár kulcsai lesznek. A kulcsok mindegyikéhez egyetlen érték fog tartozni, …

Mire figyeljünk, ha egy szótárt dict.fromkeys() metódussal hozunk létre? Read More »

Hogyan készítsünk olyan iterátort, amely iterálható objektumok elemeit váltakozva összefésülve szolgáltatja?

A feladat tehát az, hogy ha van pl. három karakterláncunk ‘ABC’, ‘DEF’, ‘GHI’, akkor az iterátorból a következő sorozat legyen kinyerhető: ‘A’, ‘D’, ‘G’, ‘B’, ‘E’, ‘H’, ‘C’, ‘F’, ‘I’. A feladat több módon is megoldható. Ezekben a közös elv, hogy először is előállítjuk az iterálható objektumok iterátorait az iter() beépített függvénnyel, hogy utána ezekből …

Hogyan készítsünk olyan iterátort, amely iterálható objektumok elemeit váltakozva összefésülve szolgáltatja? Read More »