Viskas, ką reikia žinoti apie „Python“ programą



Šis straipsnis suteiks jums išsamių ir išsamių žinių apie „Eval“ sistemoje „Python“. Tai yra trūkumai ir naudojimo pavyzdžiai.

Visur, kur apsižvalgysite, rasite programą, specialiai sukurtą jūsų poreikiams patenkinti. Nors yra daug programavimo kalbų, kurias galima naudoti kuriant šias programas, dauguma jų kuriamos naudojant . „Python“ kartu su savo puikiomis funkcijomis ir didesniu universalumu pateikia ant stalo unikalių pasiūlymų, kurie yra galingi ir nepaprastai naudingi bet kuriuo metu. Šiame „Eval in Python“ straipsnyje aptarsime šiuos dalykus:

Kas yra „Eval“ „Python“?

„Eval“ funkcija „Python“ yra viena iš įdomiausių galimybių. Kai kurie tai vadina įsilaužimu, o kiti - sparčiuoju klavišu, tačiau bet kuriuo atveju galite juo pasinaudoti, norėdami paleisti „Python“ programą pagal „Python“ kodą. Gana šaunu, tiesa?





Kai naudojate eval funkciją, jūs iš esmės raginate vertėją paleisti, kuris yra uždarytas eval funkcijos skliausteliuose.

PythonLogo- Įvertinkite „Python“„Eval“ funkcijos „Python“ naudojimo sintaksė yra:



eval (išraiška, globaliniai = Nėra, vietiniai = Nėra)

Pirmiau pateiktoje sintaksėje

  1. Išraiška: Būtent eilutė arba kodo dalis yra analizuojama ir vertinama kaip „Python“ išraiška pačioje „Python“ programoje.



  2. Visuotinis: Būtent žodynas yra naudojamas apibrėžti visus pasaulinius metodus, galinčius įvykdyti aukščiau minėtą išraišką. Tai yra pasirenkamas objektas ir jo naudojimas priklauso nuo jūsų poreikio.

  3. Vietiniai: Panašus į globalius, tai yra dar vienas žodynas, naudojamas nurodyti galimus vietinius metodus ir kintamuosius.

    c ++ rūšiuoti numerius didėjimo tvarka

Norėdami geriau suprasti šios funkcijos naudojimą, pažvelkite į toliau pateiktą pavyzdį.

iš matematikos importo * def secret_function (): return 'Slaptas raktas yra 1234' def function_creator (): # vertintina išraiška expr = raw_input ('Įveskite funkciją (x reikšme):') # išraiškoje naudojamas kintamasis x = int (raw_input ('Įveskite x reikšmę:')) # vertinant išraišką y = eval (expr) # spausdinant įvertintą rezultatą spausdinti ('y = {}'. formatas (y)) jei __name__ == '__main__': function_creator ()

Ankstesniame pavyzdyje function_creator yra funkcija, kuri įvertins vartotojo sukurtas matematines išraiškas, kai bus vykdoma programa.

Išvestis:

Įveskite funkciją (x reikšme): x * (x + 1) * (x + 2)

Įveskite x reikšmę: 3

y = 60

Analizė

Dabar, kai peržiūrėjote anksčiau bendrinamą kodą, leiskite mums jį analizuoti šiek tiek toliau.

  1. Pirmiau nurodyta funkcija įves bet kurį kintamąjį išraiškoje x.

  2. Vykdžius, vartotojas bus paragintas įvesti x reikšmę, tik po to bus sukurta programa.

  3. Galiausiai programa „Python“ vykdys eval funkciją analizuodamaišrkaip argumentą.

Vertinimo trūkumai

Panašiai kaip ir kitos integruotos „Python“ funkcijos, „eval“ taip pat turi keletą trūkumų, kurie gali sukelti problemą, jei nebus atsižvelgiama į tai.

Jei pažvelgsite į pirmiau pateiktą pavyzdį, vienas iš pagrindinių funkcijos, funkcijos_kūrėjas pažeidžiamumų yra tai, kad ji gali parodyti visas paslėptas programos vertes ir iškviesti žalingą funkciją, nes pagal numatytuosius nustatymus „eval“ vykdys viską, kas yra jos skliaustuose.

Norėdami tai suprasti toliau, pažvelkite į toliau pateiktą pavyzdį.

Vartotojo įvestis

Įveskite funkciją (pagal x): secret_function ()

Įveskite x: 0 reikšmę

Išvestis:

y = slaptas raktas yra 1234

Kita pavojinga situacija, susijusi su eval funkcijos naudojimu, yra importuoti os modulį. Kai importuojate „os“ modulį, jis leidžia „Python“ skaityti ir rašyti visus jūsų gimtojoje sistemoje esančius failus be vartotojo tapatybės patvirtinimo. Tokiu atveju, jei neteisingai rašote vienąkodo eilutė, visi jūsų vietiniai failai gali būti ištrinti.

Visų šių trūkumų sprendimas yra riboti eval funkcijos galimybes.

„Eval“ saugumas „Python“

Pagal numatytuosius nustatymus „Eval“ pateikiama galimybė išanalizuoti bet kurią funkciją, prie kurios ji gali naudotis, arba bet kurią jau apibrėžtą. Turint tai omenyje rašant kodą, bus žymiai apribotos „eval“ galimybės, todėl įsitikinsite, kad nieko blogo nebus.

Norėdami suprasti šią sąvoką toliau, pažvelkite į toliau pateiktą pavyzdį.

iš matematikos importo * def secret_function (): return 'Slaptas raktas yra 1234' def function_creator (): # vertintina išraiška expr = raw_input ('Įveskite funkciją (x reikšme):') # išraiškoje naudojamas kintamasis x = int (raw_input ('Įveskite x reikšmę:')) # kintamasis x perduodamas saugiame žodyne safe_dict ['x'] = x # vertinant išraišką y = eval (expr, {'__builtins __': Nėra}, safe_dict) # spausdinimas įvertintas rezultatas atspausdintas ('y = {}'. formatas (y)), jei __pavadinimas__ == '__main__': # saugių metodų sąrašas safe_list = ['acos', 'asin', 'atan', 'atan2', 'lubos ',' cos ',' cosh ',' laipsniai ',' e ',' exp ',' fabs ',' grindys ',' fmod ',' frexp ',' hipot ',' ldexp ',' log ', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh'] # saugių metodų žodyno kūrimas safe_dict = dict ([[(k, localals (). get (k, None)) k už saugųjį sąrašą]] function_creator ()

Vartotojo įvestis

Įveskite funkciją (pagal x): secret_function ()

Įveskite x: 0 reikšmę

Išvestis:

„NameError“: vardas „secret_function“ nėra apibrėžtas

Kaip matote apriboję „eval“ prieigą, buvo paneigta neteisingos produkcijos, kuri gali pasirodyti žalinga, tikimybė.

„Eval“ naudojimas

Kaip paaiškinta ankstesniuose skyriuose, dėl kelių saugumo priežasčių „eval“ nėra taip dažnai naudojamas. Tačiau vis dėlto yra tam tikrų naudojimo atvejų, kai „eval“ naudojimas yra naudingas. Vieni reikšmingiausių iš jų yra.

  1. Jei norite, kad vartotojas įrašytų savo scenarijus modifikuoti programos išvestį, bus naudinga naudoti eval funkciją.

  2. Rašydami išraiškas, kad išspręstumėte matematines užklausas, galite naudoti „eval“, nes tai yra daug lengviau nei parašyti išraiškų analizatorių.

Dabar, kai žinote viską apie „eval“, tikimės, kad naudosite tą patį savo kasdieniame programavime, turėdami omenyje privalumus ir trūkumus.

Tuo mes baigėme šį „Python“ straipsnio pabaigą. Norėdami gauti išsamių žinių apie „Python“ kartu su įvairiomis jo programomis, galite tiesioginėms internetinėms treniruotėms, palaikančioms visą parą visą parą ir visą gyvenimą.

Turite mums klausimą? Paminėkite juos komentarų skiltyje „Eval in Python“ ir mes susisieksime su jumis.