Hónap: 2023. szeptember

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 »

Mikor és hol használjunk operátort és hasonló eredményt adó függvényt, illetve metódust?

A Pythonban egy feladatot általában több módon, többféle nyelvi lehetőséggel is meg lehet oldani. Így például számos műveletre léteznek operátorok, de ezek mellett vannak függvények vagy metódusok, amelyek hívásával a végeredmény tekintetében hasonlóan célt érünk. Felmerülhet a kérdés, hogy akkor melyik utat válasszuk egy adott feladat esetén. Erre, ahogy az általában lenni szokott, nem lehet …

Mikor és hol használjunk operátort és hasonló eredményt adó függvényt, illetve metódust? Read More »

Hogyan használjuk a reduce() függvényt, ha a redukció során az indexet is figyelembe kell venni, illetve a közbenső részeredményt konstanssal kell szorozni?

A functools modul reduce() függvényét általában akkor javasolt használni, ha a feladatot valamilyen nyelvi szerkezettel (pl. konténerépítő kifejezéssel), vagy beépített redukáló függvénnyel (all(), any(), len(), max(), min(), sum()) nem, vagy csak körülményesen lehet megoldani. Az alábbi ábra A) részében egy egyszerű halmozott összeadás képletét és rendszertechnikai blokksémáját látjuk. Ha az a feladat, hogy az 1,2,3 …

Hogyan használjuk a reduce() függvényt, ha a redukció során az indexet is figyelembe kell venni, illetve a közbenső részeredményt konstanssal kell szorozni? Read More »

Tudtad, hogy kontextuskezelő nem csak fájlműveletekben használható?

A with…as… szerkezetben alkalmazható kontextuskezelő fogalmát legtöbbször a fájlmegnyitással kapcsolatban szokták bevezetni, mert valóban ez talán a leggyakoribb használati eset.  Mindazonáltal a kontextuskezelők sok más helyzetben is alkalmazhatók. Éppen ezért a Python tudásépítés lépésről lépésre című e-könyv „Kontextuskezelők” fejezete szándékosan nem fájlművelethez kötődő példákon keresztül vezeti be és tárgyalja a kontextuskezelők részleteit annak érdekében, hogy …

Tudtad, hogy kontextuskezelő nem csak fájlműveletekben használható? Read More »