Python-ban minek hivjak ezt az ujfajta szintaxist?
Pl.:
class Hello():
name: str
def hello(n: int) -> int:
"Hasznalja valaki?"
Minden ember, aki értelmes kódot szeretne írni...
"atlathatatlanabb tole a kod."
Na ne...
A Python erősen, de dinamikusan típusos nyelv, ami azt jelenti, hogy az értékeknek van típusuk (pl. string vagy integer), de azt nem kell megadni, az értelmező kitalálja illetve ellenőrzi.
Ez kis programocskáknál nem gond, azonban ahogyan nő a kódbázis, egyre nagyobb probléma, mert nem lehet tudni, hogy pl. a
kivesz_a_raktarbol(tetel, darab)
függvény pontosan mit is vesz ki a raktárból (azt könnyebb megmondani, hogy a darab az valószínűleg integer típusú).
Ennek elkerülése véget bevezették az opcionális típusmegjelölést (angolul type hint, magyarul...?). A legújabb kiadásokban ez már alapból benne van (azt hiszem 3.10, 3.11), a régebbiekben importálnod kell hozzá a typing modult. [link]
Ez a videó értelmesen elmagyarázza: https://www.youtube.com/watch?v=QORvB-_mbZ0
Nyugodtan programozhatsz e nélkül is Pythonban, a fordító nem kéri számon. A mypy nevű modullal szokás ellenőrizni, hogy nem sértik-e a hivatkozásaid a típusosságot (de ez opcionális).
Azonban a Python is fejlődik, és nagyon érdemes rápillantanod a pydantic csomagra, amely eredetileg egy futásidejű adatvalidációs könyvtár, de ezzel szokás újabban az adatkonverziókat ellenőrizni: [link]
Szóval amíg csak kis programocskákat írsz, addig hagyd figyelmen kívül, teljesen mindegy. De ahogyan fentebb is írják, érdemes rászokni a típusmegjelölések használatára, ez alapvető jó szokás a dinamikus nyelvek esetében is.
Annyira azért nem új, emlékeim szerint python 3.5 körül jött ki.
A célja az, hogy ha nem ismered a kódot, vagy újra akarsz használni funkciókat máshol akkor tudjad hogy az az adott függvény mit ad neked vissza vagy épp mit kér, anélkül hogy elkezdenéd elemezni a kódot.
Pl egy funkció adatbázislekérdezést csinál, mondjuk get_weather_data() néven. Ha egy másik modulban kell neked ez a függvény akkor honnan tudod, hogy milyen adatot ad vissza? Lehet dictionary, de lehet egy Class objektum vagy éppen egy Pandas dataframe, de akár egy egyszerű string is.
Ugyanez igaz a bemenetekre is, mondjuk a get_weather_data() funkciónál meg kell adnod hogy mikorra kéred mondjuk egy date változóval. Megint csak lehet ez datetime.date(2022,10,7) egy string(2022-10-7) vagy akár egy integer(20221007)
Sőt az alap typhinteknél bonyolultabbak is jelen vannak nagyobb projektekben, mert ahogy nő a projekt úgy egyre nehezebb egy kívülállónak rálátnia, hogy mi is történik pontosan.
Egyértelműen ha akarsz egy pici pythonprogramot akkor nem fogsz typehintekkel bajlódni, de ha egy rendszert építesz akkor mindenképpen szükséges.
A typhintek kivehetőek vagy áthághatóak, ezek csak nekünk programozóknak és a programunkat felhasználó embereknek fontos.
További kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!