Mindössze annyit kell tudni az Evalról a Pythonban



Ez a cikk részletes és átfogó ismereteket nyújt Önnek az Eval Pythonról, hátrányai és felhasználási példái.

Mindenütt, ahol körülnéz, talál egy olyan alkalmazást, amelyet kifejezetten az Ön igényeinek kielégítésére fejlesztettek ki. Bár számos programozási nyelv használható ezen alkalmazások fejlesztésére, legtöbbjük felhasználásával épül fel . A Python a nagyszerű tulajdonságokkal és a megnövekedett sokoldalúsággal párosulva egyedülálló kínálatot hoz az asztalra, amelyek mind erőteljesek, mind pedig rendkívül hasznosak. Ebben az Eval in Python cikkben a következő pontokat fogjuk megvitatni:

Mi az Eval a Pythonban?

A Python eval függvénye az egyik legérdekesebb lehetőség odakinn. Vannak, akik hacknek, mások pedig parancsikonnak hívják, de akárhogy is használhatja, Python program futtatásához Python kódon belül. Nagyon klassz, igaz?





Az eval függvény használatakor alapvetően arra kéri a tolmácsot, hogy fusson, amely az eval függvény zárójelébe van zárva.

PythonLogo- Eval a PythonbanAz eval függvény Python használatának szintaxisa:



eval (kifejezés, globálisok = nincsenek, lokálisok = nincsenek)

A fenti szintaxisban

  1. Kifejezés: A karakterláncot vagy a kóddarabot elemzik és értékelik Python-kifejezésként magában a Python-programban.



  2. Globális: A szótár az, amely meghatározza a fent említett kifejezés végrehajtásához rendelkezésre álló összes globális módszert. Ez egy választható entitás, és felhasználása az Ön igényeitől függ.

  3. Helyiek: A globálokhoz hasonlóan ez egy másik szótár, amelyet a rendelkezésre álló helyi módszerek és változók megadására használnak.

A funkció használatának jobb megértéséhez nézze meg az alábbi példát.

matematikai importból * def secret_function (): return 'A titkos kulcs 1234' def function_creator (): # Értékelendő kifejezés expr = raw_input ('Írja be a függvényt (x-ben kifejezve):') # Az x = kifejezésben használt változó int (raw_input ('Írja be az x értékét:')) # kiértékelő y = eval (expr) # kiértékelt eredmény kinyomtatása print ('y = {}'. format (y)) ha __név__ == '__main__': function_creator ()

A fenti példában a function_creator egy olyan függvény, amely kiértékeli a felhasználó által létrehozott matematikai kifejezéseket a program végrehajtásakor.

Kimenet:

Írja be a függvényt (x-ben kifejezve): x * (x + 1) * (x + 2)

Adja meg az x értékét: 3

y = 60

Elemzés

Most, hogy megnézte a fent megosztott kódot, elemezzük egy kicsit tovább.

  1. A fenti függvény az x kifejezés bármely változóját fogja bevinni.

  2. A végrehajtás után a felhasználót arra kéri, hogy adjon meg egy értéket x-hez, csak ezután eredményezi a program létrehozását.

  3. Végül a Python program végrehajtja az eval függvényt akifejezérvként.

Az Eval hátrányai

A Python többi beépített funkciójához hasonlóan az eval is tartalmaz néhány hátrányt, amelyek problémát okozhatnak, ha nem veszik figyelembe.

Ha megnézzük a fenti példát, akkor a function_creator függvény egyik fő sérülékenysége, hogy minden rejtett értéket ki tud fedni a programon belül, és káros funkciót is meghívhat, mivel az eval alapértelmezés szerint mindent végrehajt, ami a zárójelében található.

Ennek további megértéséhez vessen egy pillantást az alábbi példára.

Bevitel a felhasználótól

Írja be a függvényt (x-ben kifejezve): secret_function ()

Írja be az x: 0 értékét

Kimenet:

y = A titkos kulcs 1234

Az eval függvény használatával járó másik veszélyes helyzet az os modul importálása. Amikor importálta az os modult, ez lehetővé teszi a Python számára, hogy a felhasználó hitelesítése nélkül olvassa és írja a natív rendszeren található fájlokat. Ilyen esetben, ha hibásan gépel be egyetkódsor, az összes natív fájl törlődhet.

E hátrányok megoldása az eval funkció képességeinek korlátozásában rejlik.

Az Eval biztonságossá tétele a Pythonban

Az Eval alapértelmezés szerint annak a funkciónak az elemzésére szolgál, amelyhez hozzáfér, vagy amely már meg van határozva. Ezt szem előtt tartva, miközben a kódot írja, jelentős mértékben korlátozza az eval képességeit, ezzel biztosítva, hogy semmi baj ne essen.

állítsa be a java elérési utat a Windows rendszerben

Ennek a koncepciónak a megértése érdekében vessen egy pillantást az alábbi példára.

matematikai importból * def secret_function (): return 'A titkos kulcs 1234' def function_creator (): # Értékelendő kifejezés expr = raw_input ('Írja be a függvényt (x-ben kifejezve):') # Az x = kifejezésben használt változó int (raw_input ('Írja be az x értékét:')) # az x változó átadása a biztonságos szótárban safe_dict ['x'] = x # az y = eval kifejezés kiértékelése (expr, {'__builtins __': Nincs}, safe_dict) # nyomtatás kiértékelt eredmény kinyomtatása ('y = {}'. formátum (y)), ha __név__ == '__main__': # biztonságos módszerek listája safe_list = ['acos', 'asin', 'atan', 'atan2', 'mennyezet ',' cos ',' cosh ',' fok ',' e ',' exp ',' fabs ',' padló ',' fmod ',' frexp ',' hipot ',' ldexp ',' log ', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh'] # biztonságos módszerek szótárának létrehozása safe_dict = dict ([(k, helyiek (). get (k, Nincs)) k esetén a biztonságos_listában]) function_creator ()

Bevitel a felhasználótól

Írja be a függvényt (x-ben kifejezve): secret_function ()

Írja be az x: 0 értékét

Kimenet:

NameError: A 'secret_function' név nincs meghatározva

Amint az eval hozzáférésének korlátozásával láthatja, a rossz kimenet esélyét, amely károsnak bizonyulhat, nem vették figyelembe.

Az Eval felhasználása

Amint azt a fenti szakaszokban kifejtettük, számos biztonsági ok miatt az eval nem olyan gyakran használt. De mégis vannak olyan speciális esetek, amikor az eval használata hasznosnak bizonyul. Ezek közül néhány a legjelentősebb.

  1. Ha azt szeretné, hogy a felhasználó saját szkriptjeit írja be a program kimenetének módosítására, akkor az eval függvény használata hasznosnak bizonyulhat.

  2. Kifejezések írása során matematikai kérdések megoldására használhatja az eval alkalmazást, mivel ez sokkal könnyebb, mint egy kifejezéselemző.

Most, hogy mindent tud az evalról, reméljük, hogy mindezt felhasználja a mindennapi programozás során, szem előtt tartva az előnyöket és a hátrányokat.

Ezzel véget értünk az Eval Python cikkében. Ha részletes ismereteket szeretne szerezni a Pythonról és annak különböző alkalmazásokról, megteheti élő online képzéshez 24/7 támogatással és egész életen át elérhető hozzáféréssel.

Van egy kérdésünk? Említse meg őket az „Eval in Python” megjegyzés rovatában, és mi kapcsolatba lépünk Önnel.