Hónap: 2023. szeptember

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 »

Mi a __main__ szerepe és mikor használjuk?

A Python programkódoknál van, amikor látni az if __name__ == ‘__main__’: kezdetű kódblokkot, de van amelyikben nem szerepel. Mi az oka ennek? A választ ott kell keresni, hogy egy .py kiterjesztésű fájlba írt kódok két féle szerepben használhatók és futtathatók.  Egyfelől be tudjuk importálni egy másik fájlban szereplő programkódba mint modul, másrészt önállóan is futtathatjuk. …

Mi a __main__ szerepe és mikor használjuk? Read More »

Mikor és miért érdemes közönséges törtekkel számolni?

A float típus behatárolt számábrázolási pontosságából adódó gondokra a decimal modul eszközei tudnak bizonyos mértékig megoldást nyújtani, amelyekről az előző bejegyzésekben volt szó. Azonban a Decimal típus sem tud végtelen pontosságot biztosítani, ami a két egész szám hányadosaként felírható racionális számok esetében akkor zavaró, ha azok végtelen vegyes vagy tiszta szakaszos tizedestörtként írhatók fel. Ebben …

Mikor és miért érdemes közönséges törtekkel számolni? Read More »

Hogyan kerekítsünk?

Az előző bejegyzésben a nagy számítási pontosságot igénylő alkalmazásokhoz a szabványos könyvtár decimal modulját használtuk, és láthattuk példákon, hogy mi a hatása, ha a kívánt pontosságot a kontextusobjektumon keresztül változtatjuk. Az értékes jegyek számának meghatározása szükséges, de általában nem elégséges feltétele az előírt pontosság eléréséhez. A teljes képhez a kerekítési módszer meghatározása szükséges, ugyanis számos …

Hogyan kerekítsünk? Read More »

Hogyan és mivel végezzünk nagy számítási pontosságot igénylő műveleteket?

Ha a Pythonban a számítási műveleteket float típusú operandusokkal végzünk, akkor azt tapasztalhatjuk, hogy nem mindig kapunk pontos, egzakt eredményt, még akkor sem, ha előre ismert számú jegyet tartalmazó véges tizedestört, vagy akár egész szám lenne az eredmény. Például 3*0.14 = 0.42000000000000004, vagy 10e9-10e-9 = 10000000000.0, vagy 2.3-0.1-0.1-0.1 = 1.9999999999999996, amelyek egyike sem pontos eredmény. …

Hogyan és mivel végezzünk nagy számítási pontosságot igénylő műveleteket? Read More »

Korutin és alkalmazása

Az előző bejegyzésben szó volt a generátorról. Azt egy olyan speciális iterátorként jellemeztük, amely lehetővé teszi a kétirányú adatmozgást a hívó kliens program és a generátor között. E tulajdonságot lehet kihasználni korutinok megvalósítására. A korutinok olyan kódszerkezetek, amelyek egymást kölcsönösen meg tudják hívni úgy, hogy egy adott feladatot együttműködve megvalósítsanak. Ezért nevezik az ilyen kódszerkezeteket …

Korutin és alkalmazása Read More »

Mi az iterátor, generátor, generátor-iterátor és iterátor generátor, generátorfüggvény és -kifejezés?

A kérdésben nem egy szójátékról van szó, hanem ezek alapvető fogalmak, de amelyek nem biztos, hogy minden Pythonnal ismerkedő számára világosak. Ezek lényegét fogaljuk össze röviden az alábbiakban. Az iterátor egy olyan objektum, amely minden egyes ismétlődő kérésre (next() függvénnyel vagy a __next__() metódus meghívásával) egy-egy újabb objektumot szolgáltat. Ha nem tud több értéket kiadni, …

Mi az iterátor, generátor, generátor-iterátor és iterátor generátor, generátorfüggvény és -kifejezés? Read More »

Mi az a monkey patching?

A Python az attribútumok definiálhatóságát illetően meglehetősen rugalmas nyelv. Ezért a Pythont használók találkozhatnak a monkey patching kifejezéssel, ami nem jelent mást, mint egy objektum futási időben történő felruházását új adat- vagy metódusattribútummal, vagy egy már meglévő metódusnevéhez új hívható objektum hozzárendelését. Persze nyilván csak akkor, ha az adott objektum engedi az új attribútum létrehozását …

Mi az a monkey patching? Read More »