Hónap: 2023. szeptember

Hogyan ellenőrizzük egy szövegben szereplő zárójelek megfelelő párosítottságát?

Írjunk egy függvényt, ami True értéket ad vissza, ha az argumentumban megadott szövegben a kerek zárójelek párosítottak, vagyis megfelelő sorrendben minden bal zárójelhez tartozik jobb zárójel. Ha ez nem teljesül, akkor a függvény visszatérési értéke False. Ha balról az első zárójel jobb zárójel, akkor biztos, hogy nem lesznek megfelelően párosítottak a zárójelek. Ha pedig balról …

Hogyan ellenőrizzük egy szövegben szereplő zárójelek megfelelő párosítottságát? Read More »

Miért hasznos, hogy az objektumoknak van igazságértéke?

A Pythonban minden objektum rendelkezik logikai igaz vagy hamis értékkel. Ez azt jelenti, hogy bármely objektumra elvégezhető a logikai értékvizsgálat. Egy objektum logikai értékét közvetlenül úgy kérdezhetjük le, hogy a vizsgált objektumot a bool() konstruktor zárójelei közé írjuk, és ennek eredményeképpen True vagy False értéket kapunk. Alapértelmezésben minden objektum logikai igaz (True) értékkel rendelkezik. Ez …

Miért hasznos, hogy az objektumoknak van igazságértéke? Read More »

Hogyan előzzük meg a névütközéseket osztályok öröklése esetén?

Tegyük fel, hogy van egy készen kapott, beimportált Számla osztályunk, amelynek csak a leírását és nyilvános attribútumait ismerjük, de a belső megvalósítását nem. Ebből az osztályból egy példányt a számlaszám és az egy alkalommal történő pénzfelvétel maximális összegének megadásával hozhatunk létre. A példányra három metódust hívhatunk meg, amelyek lehetővé teszik összeg befizetését, felvételét, valamint az …

Hogyan előzzük meg a névütközéseket osztályok öröklése esetén? Read More »

Miért futnak le az osztálydefiníció törzsének utasításai azonnal, azaz 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 megfelelő …

Miért futnak le az osztálydefiníció törzsének utasításai azonnal, azaz 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 »