Alt du trenger å vite om Eval i Python



Denne artikkelen vil gi deg en detaljert og omfattende kunnskap om Eval i Python, det er ulemper og bruksområder med eksempler.

Overalt hvor du ser deg rundt, finner du et program som er spesielt utviklet for å oppfylle dine behov. Selv om det er mange programmeringsspråk som kan brukes til å utvikle disse applikasjonene, er de fleste bygget med . Python sammen med sine flotte funksjoner og økt allsidighet bringer til bordet unike tilbud som er både kraftige og ekstremt nyttige til enhver tid. I denne Eval in Python-artikkelen vil vi diskutere følgende punkter:

Hva er Eval i Python?

Eval-funksjonen i Python er et av de mest interessante alternativene der ute. Noen kaller det et hack og noen kaller det en snarvei, men uansett kan du bruke det til å kjøre et Python-program innenfor en Python-kode. Ganske kult, ikke sant?





Når du bruker eval-funksjonen, oppfordrer du i utgangspunktet tolken til å løpe som er lukket i braketten til eval-funksjonen.

PythonLogo- Eval i PythonSyntaksen for bruk av eval-funksjonen i Python er:



eval (uttrykk, globaler = ingen, lokalbefolkningen = ingen)

I syntaksen ovenfor,

  1. Uttrykk: Det er strengen eller koden som blir analysert og evaluert som et Python-uttrykk i selve Python-programmet.



  2. Global: Det er ordboken som brukes til å definere alle de globale metodene som er tilgjengelige for å utføre uttrykket nevnt ovenfor. Dette er en valgfri enhet, og bruken avhenger av ditt behov.

  3. Lokalbefolkningen: I likhet med globaler er dette en annen ordbok som brukes til å spesifisere tilgjengelige lokale metoder samt variabler.

For å forstå bruken av denne funksjonen bedre, ta en titt på eksemplet nedenfor.

fra matematisk import * def secret_function (): return 'Secret key is 1234' def function_creator (): # expression to be evaluated expr = raw_input ('Skriv inn funksjonen (i form av x):') # variabel brukt i uttrykk x = int (raw_input ('Angi verdien av x:')) # evaluering av uttrykk y = eval (expr) # utskrift evaluert resultatutskrift ('y = {}'. format (y)) hvis __name__ == '__main__': function_creator ()

I eksemplet ovenfor er function_creator en funksjon som vil evaluere matematiske uttrykk opprettet av brukeren når programmet kjøres.

Produksjon:

Skriv inn funksjonen (i form av x): x * (x + 1) * (x + 2)

Skriv inn verdien på x: 3

y = 60

Analyse

Nå som du har sett på koden som er delt ovenfor, la oss analysere den litt videre.

  1. Ovennevnte funksjon vil ta en hvilken som helst variabel i uttrykket x som inngang.

  2. Når den er utført, vil brukeren bli bedt om å angi en verdi for x, bare deretter vil resultatet for programmet bli generert.

  3. Til slutt vil Python-programmet utføre eval-funksjonen ved å analysereeksprsom argument.

Ulemper med Eval

I likhet med andre innebygde funksjoner i Python, kommer eval også med noen ulemper som kan skape et problem hvis ikke regnskapsføres.

Hvis du ser på eksemplet ovenfor, en av de viktigste sårbarhetene i funksjonen, function_creator er at den kan avsløre eventuelle skjulte verdier i programmet og også påkalle en skadelig funksjon som eval som standard vil utføre alt som ligger innenfor parentesen.

uklar logikk i kunstig intelligens

For å forstå dette videre, ta en titt på eksemplet nedenfor.

Inndata fra bruker

Skriv inn funksjonen (i form av x): secret_function ()

Skriv inn verdien av x: 0

Produksjon:

y = Hemmelig nøkkel er 1234

En annen farlig situasjon som følger med å bruke eval-funksjonen er å importere os-modulen. Når du har importert os-modulen, lar den Python lese og skrive alle filer som er tilstede på ditt opprinnelige system uten godkjenning fra brukeren. I et slikt tilfelle, hvis du feilaktig skriver inn en singelkodelinje, kan alle dine innfødte filer bli slettet.

Løsningen på alle disse ulempene ligger i å begrense eval-funksjonens evner.

Gjør Eval Safe i Python

Eval kommer som standard med muligheten for å analysere en hvilken som helst funksjon den har tilgang til eller noen som allerede er definert. Hvis du holder dette i bakhodet mens du skriver koden din, begrenser eval evner i betydelig grad, og sørger for at du ikke får noe galt.

For å forstå dette konseptet videre, ta en titt på eksemplet nedenfor.

fra matematisk import * def secret_function (): return 'Secret key is 1234' def function_creator (): # expression to be evaluated expr = raw_input ('Skriv inn funksjonen (i form av x):') # variabel brukt i uttrykk x = int (raw_input ('Skriv inn verdien av x:')) # passerende variabel x i safe dictionary safe_dict ['x'] = x # evaluering av uttrykk y = eval (expr, {'__builtins __': Ingen}, safe_dict) # utskrift evaluert resultatutskrift ('y = {}'. format (y)) hvis __navn__ == '__main__': # liste over sikre metoder safe_list = ['acos', 'asin', 'atan', 'atan2', 'ceil ',' cos ',' cosh ',' grader ',' e ',' exp ',' fabs ',' floor ',' fmod ',' frexp ',' hypot ',' ldexp ',' log ', 'log10', 'modf', 'pi', 'pow', 'radianer', 'sin', 'sinh', 'sqrt', 'tan', 'tanh'] # skaper en ordbok med sikre metoder safe_dict = dict ([(k, lokalbefolkningen (). få (k, Ingen)) for k i safe_list]) function_creator ()

Inndata fra bruker

Skriv inn funksjonen (i form av x): secret_function ()

Skriv inn verdien av x: 0

Produksjon:

NameError: navnet 'secret_function' er ikke definert

Som du kan se ved å begrense tilgangen til eval, er sjansene for feil produksjon som kan vise seg å være skadelig negert.

Bruk av Eval

Som forklart i avsnittene ovenfor, er eval på grunn av flere sikkerhetsgrunner ikke så vanlig. Men likevel er det spesielle bruksområder der bruk av eval viser seg å være nyttig. Noen av de viktigste av disse er.

  1. Hvis du vil at brukeren skal legge inn sine egne scriptlets for å endre utdataene til programmet, vil det være nyttig å bruke eval-funksjonen.

  2. Mens du skriver uttrykk for å løse matematiske spørsmål, kan du bruke eval, da det er mye enklere enn å skrive en uttrykksparser.

Nå som du vet alt om eval, håper vi at du vil bruke det samme i den daglige programmeringen din, mens du husker fordelene og ulempene.

Med dette kommer vi til en slutt på denne Eval in Python-artikkelen. For å få inngående kunnskap om Python sammen med dets forskjellige applikasjoner, kan du for live online trening med 24/7 support og levetidstilgang.

Har du et spørsmål til oss? Nevn dem i kommentarfeltet i “Eval in Python”, så kommer vi tilbake til deg.