Kaikki mitä sinun tarvitsee tietää Pythonin Evalista



Tämä artikkeli antaa sinulle yksityiskohtaisen ja kattavan tiedon Evalin Pythonista, sen haitoista ja käyttötavoista esimerkkien kanssa.

Kaikkialta ympärillesi katsomalla löydät sovelluksen, joka on erityisesti rakennettu vastaamaan tarpeitasi. Vaikka on olemassa monia ohjelmointikieliä, joita voidaan käyttää näiden sovellusten kehittämiseen, suurin osa niistä on rakennettu käyttäen . Python sen upeiden ominaisuuksien ja lisääntyneen monipuolisuuden myötä tuo pöydälle ainutlaatuisia tarjouksia, jotka ovat sekä tehokkaita että erittäin hyödyllisiä kaikkina aikoina. Tässä Eval in Python -artikkelissa keskustellaan seuraavista seikoista:

Mikä on Eval Pythonissa?

Pythonin eval-toiminto on yksi mielenkiintoisimmista vaihtoehdoista. Jotkut kutsuvat sitä hakkeroinniksi ja jotkut kutsuvat sitä pikakuvakkeeksi, mutta kummallakin tavalla voit käyttää sitä python-ohjelman suorittamiseksi Python-koodissa. Melko siistiä, eikö?





Kun käytät eval-toimintoa, kehotat tulkkia suorittamaan eval-toiminnon suluissa olevan juoksun.

PythonLogo- Arvioi PythonissaSyntaksi eval-toiminnon käyttämiselle Pythonissa on:



eval (lauseke, globaalit = Ei mitään, paikalliset = Ei mitään)

Edellä olevassa syntaksissa

  1. Ilmaisu: Merkkijono tai koodikappale jäsennetään ja arvioidaan Python-lausekkeena itse Python-ohjelmassa.



  2. Globaali: Sanakirjaa käytetään määrittämään kaikki käytettävissä olevat yleiset menetelmät yllä mainitun lausekkeen toteuttamiseksi. Tämä on valinnainen kokonaisuus ja sen käyttö riippuu tarpeestasi.

  3. Paikalliset: Samoin kuin globaalit, tämä on toinen sanakirja, jota käytetään määrittämään käytettävissä olevat paikalliset menetelmät ja muuttujat.

Katso alla oleva esimerkki ymmärtääksesi tämän toiminnon käytön paremmin.

matemaattisesta tuonnista * def secret_function (): return 'Salainen avain on 1234' def function_creator (): # Arvioitava lauseke expr = raw_input ('Syötä funktio (x: n mukaan):') # lausekkeessa x = käytetty muuttuja int (raw_input ('Syötä x: n arvo:')) # arvioi lauseketta y = eval (expr) # tulostaa arvioidun tuloksen ('y = {}'. format (y)) jos __name__ == '__main__': function_creator ()

Edellä olevassa esimerkissä function_creator on funktio, joka arvioi käyttäjän luomat matemaattiset lausekkeet, kun ohjelma suoritetaan.

toiminnon ylikuormitus c ++: ssa

Tuotos:

Syötä funktio (x): x * (x + 1) * (x + 2)

Syötä x: n arvo: 3

y = 60

Analyysi

Nyt kun olet tarkastellut yllä jaettua koodia, analysoimme sitä hieman tarkemmin.

  1. Yllä oleva funktio ottaa minkä tahansa lausekkeen x muuttujan syötteeksi.

  2. Kun se on suoritettu, käyttäjää kehotetaan syöttämään arvo x: lle, minkä jälkeen ohjelma generoidaan.

  3. Lopuksi Python-ohjelma suorittaa eval-toiminnon jäsentämällälausekeargumenttina.

Eval: n haitat

Samoin kuin muissa Pythonin sisäänrakennetuissa toiminnoissa, myös evalissa on muutamia haittoja, jotka saattavat aiheuttaa ongelman, ellei sitä oteta huomioon.

Jos tarkastelet yllä olevaa esimerkkiä, funktion funktion luoja yksi tärkeimmistä haavoittuvuuksista on, että se voi paljastaa kaikki piilotetut arvot ohjelmassa ja kutsua myös haitallisen toiminnon, koska eval suorittaa oletusarvoisesti kaikki suluissaan olevat.

Ymmärrä tämä edelleen katsomalla alla olevaa esimerkkiä.

Syöttö käyttäjältä

Syötä funktio (x: n suhteen): secret_function ()

Syötä x: 0 arvo

Tuotos:

y = Salainen avain on 1234

Toinen vaarallinen tilanne, joka liittyy eval-toiminnon käyttöön, on tuoda os-moduuli. Kun olet tuonut os-moduulin, se antaa Pythonille mahdollisuuden lukea ja kirjoittaa natiivijärjestelmässäsi olevia tiedostoja ilman käyttäjän todennusta. Jos tällöin kirjoitat yhden väärinrivin koodin, kaikki alkuperäiset tiedostosi saatetaan poistaa.

Ratkaisu kaikkiin näihin haittoihin on eval-toiminnon ominaisuuksien rajoittaminen.

Tehdä Eval turvalliseksi Pythonissa

Oletusarvion sisältävässä Eval-ohjelmassa on mahdollisuus jäsentää kaikki toiminnot, joihin sillä on pääsy, tai kaikki, jotka on jo määritetty. Tämän pitäminen mielessä kirjoittaessasi koodia rajoittaa evalin ominaisuuksia huomattavasti ja varmistaa, että mikään ei mene pieleen.

Voit ymmärtää tätä käsitettä tarkemmin katsomalla alla olevaa esimerkkiä.

matemaattisesta tuonnista * def secret_function (): return 'Salainen avain on 1234' def function_creator (): # Arvioitava lauseke expr = raw_input ('Syötä funktio (x: n mukaan):') # lausekkeessa x = käytetty muuttuja int (raw_input ('Syötä x: n arvo:')) # muuttujan x välittäminen turvallisessa sanakirjassa safe_dict ['x'] = x # lausekkeen y = eval arviointi (lauseke, {'__builtins __': Ei mitään}, safe_dict) # tulostus arvioitu tulos tulosta ('y = {}'. muoto (y)), jos __nimi__ == '__main__': # luettelo turvallisista menetelmistä safe_list = ['acos', 'asin', 'atan', 'atan2', 'katto ',' cos ',' cosh ',' astetta ',' e ',' exp ',' fabs ',' lattia ',' fmod ',' frexp ',' hypot ',' ldexp ',' log ', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh'] # turvallisten menetelmien sanakirjan luominen safe_dict = dict ([(k, paikalliset (). get (k, Ei mitään)) k: lle turvallisessa luettelossa]) function_creator ()

Syöttö käyttäjältä

Syötä funktio (x: n suhteen): secret_function ()

Syötä x: 0 arvo

Tuotos:

NameError: nimeä 'secret_function' ei ole määritelty

Kuten voit nähdä rajoittamalla evalin pääsyä, väärän tuotoksen mahdollisuudet, jotka voivat osoittautua haitallisiksi, on kumottu.

Eval: n käyttö

Kuten yllä olevissa kohdissa on selitetty, evalia ei useista turvallisuussyistä käytetä niin yleisesti. Mutta silti on erityisiä käyttötapauksia, joissa evalin käyttö osoittautuu hyödylliseksi. Jotkut merkittävimmistä näistä ovat.

  1. Jos haluat käyttäjän kirjoittavan omat komentosarjansa muokkaamaan ohjelman tulosta, eval-toiminnon käyttäminen osoittautuu hyödylliseksi.

  2. Kun kirjoitat lausekkeita matemaattisten kyselyjen ratkaisemiseksi, voit käyttää evalia, koska se on paljon helpompaa kuin lausekkeen jäsentimen kirjoittaminen.

Nyt kun tiedät kaiken evalista, toivomme, että hyödynnät samaa päivittäisessä ohjelmoinnissasi pitäen mielessä sekä edut että haitat.

Tämän avulla olemme päässeet tämän Evalin Python-artikkeliin. Voit saada syvällistä tietoa Pythonista sen eri sovellusten kanssa live-verkkokoulutukseen 24/7 tuella ja käyttöikä.

Onko sinulla kysymys meille? Mainitse ne ”Eval in Python” -kommenttiosassa, niin palaamme sinuun.