Yang Perlu Anda Ketahui Tentang Evaluasi dengan Python



Artikel ini akan memberi Anda pengetahuan rinci dan komprehensif tentang Evaluasi dengan Python, Ini kekurangan dan penggunaan dengan contoh.

Ke mana pun Anda melihat sekeliling, Anda akan menemukan aplikasi yang telah dibuat khusus untuk memenuhi kebutuhan Anda. Meskipun ada banyak bahasa pemrograman yang dapat digunakan untuk mengembangkan aplikasi ini, kebanyakan dari mereka dibangun dengan menggunakan . Python bersama dengan fitur-fiturnya yang hebat dan keserbagunaan yang meningkat membawa ke meja penawaran unik yang kuat dan sangat berguna setiap saat. Dalam artikel Evaluasi dengan Python ini kita akan membahas poin-poin berikut:

Apa itu Eval dengan Python?

Fungsi eval dengan Python adalah salah satu opsi paling menarik di luar sana. Beberapa menyebutnya hack dan beberapa menyebutnya jalan pintas, tetapi bagaimanapun Anda dapat memanfaatkannya, untuk menjalankan program Python dalam kode Python. Cukup keren bukan?





Saat Anda menggunakan fungsi eval, pada dasarnya Anda mendorong interpreter untuk menjalankan yang disertakan dalam tanda kurung fungsi eval.

PythonLogo- Evaluasi dengan PythonSintaks untuk menggunakan fungsi eval dengan Python adalah:



eval (ekspresi, global = Tidak ada, penduduk setempat = Tidak ada)

Dalam sintaks di atas,

  1. Ekspresi: Ini adalah string atau potongan kode yang diurai dan dievaluasi sebagai ekspresi Python dalam program Python itu sendiri.



  2. Global: Ini adalah kamus yang digunakan untuk mendefinisikan semua metode global yang tersedia untuk mengeksekusi ekspresi yang disebutkan di atas. Ini adalah entitas opsional dan penggunaannya bergantung pada kebutuhan Anda.

  3. Penduduk setempat: Mirip dengan global, ini adalah kamus lain yang digunakan untuk menentukan metode lokal yang tersedia serta variabel.

Untuk lebih memahami penggunaan fungsi ini, lihat contoh di bawah ini.

dari impor matematika * def secret_function (): return 'Kunci rahasia adalah 1234' def function_creator (): # ekspresi yang akan dievaluasi expr = raw_input ('Masukkan fungsi (dalam istilah x):') # variabel yang digunakan dalam ekspresi x = int (raw_input ('Masukkan nilai x:')) # mengevaluasi ekspresi y = eval (expr) # pencetakan hasil evaluasi print ('y = {}'. format (y)) if __name__ == '__main__': function_creator ()

Pada contoh di atas, function_creator adalah fungsi yang akan mengevaluasi ekspresi matematika yang dibuat oleh pengguna saat program dijalankan.

Keluaran:

Masukkan fungsi (dalam hal x): x * (x + 1) * (x + 2)

Masukkan nilai x: 3

y = 60

Analisis

Sekarang Anda telah melihat kode yang dibagikan di atas, mari kita menganalisisnya lebih jauh.

  1. Fungsi di atas akan mengambil variabel apa pun dalam ekspresi x sebagai inputnya.

  2. Setelah dijalankan, pengguna akan diminta untuk memasukkan nilai x, hanya setelah itu hasil untuk program akan dibuat.

  3. Terakhir, program Python akan menjalankan fungsi eval dengan mengurai fileexprsebagai argumen.

Kekurangan dari Eval

Mirip dengan fungsi bawaan Python lainnya, eval juga memiliki beberapa kelemahan yang mungkin menimbulkan masalah jika tidak diperhitungkan.

Jika Anda melihat contoh di atas, salah satu kerentanan utama fungsi, function_creator adalah ia dapat mengekspos nilai tersembunyi apa pun dalam program dan juga memanggil fungsi berbahaya karena eval secara default akan mengeksekusi apa pun yang ada di dalam tanda kurung.

Untuk memahami ini lebih lanjut, lihat contoh di bawah ini.

Masukan dari Pengguna

Masukkan fungsi (dalam hal x): secret_function ()

Masukkan nilai x: 0

Keluaran:

y = Kunci rahasia adalah 1234

Situasi berbahaya lainnya yang datang dengan menggunakan fungsi eval adalah mengimpor modul os. Ketika Anda telah mengimpor modul os, itu memungkinkan Python untuk membaca dan menulis file apa pun yang ada di sistem asli Anda tanpa otentikasi dari pengguna. Dalam kasus seperti itu, jika Anda salah mengetik satubaris kode, semua file asli Anda mungkin terhapus.

Solusi untuk semua kekurangan ini terletak pada pembatasan kapabilitas fungsi eval.

setel jalur kelas untuk java

Membuat Eval Aman dengan Python

Evaluasi secara default dilengkapi dengan opsi untuk mengurai fungsi apa pun yang dapat diaksesnya atau yang telah ditentukan. Mengingat hal ini saat menulis kode Anda, akan membatasi kemampuan eval sampai batas tertentu sehingga memastikan bahwa tidak ada yang salah.

Untuk memahami konsep ini lebih jauh, lihat contoh di bawah ini.

dari impor matematika * def secret_function (): return 'Kunci rahasia adalah 1234' def function_creator (): # ekspresi yang akan dievaluasi expr = raw_input ('Masukkan fungsi (dalam istilah x):') # variabel yang digunakan dalam ekspresi x = int (raw_input ('Masukkan nilai x:')) # melewati variabel x dalam kamus aman safe_dict ['x'] = x # mengevaluasi ekspresi y = eval (expr, {'__builtins __': Tidak ada}, safe_dict) # pencetakan print hasil yang dievaluasi ('y = {}'. format (y)) if __name__ == '__main__': # daftar metode aman safe_list = ['acos', 'asin', 'atan', 'atan2', 'ceil ',' cos ',' cosh ',' derajat ',' e ',' exp ',' fabs ',' floor ',' fmod ',' frexp ',' hypot ',' ldexp ',' log ', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh'] # membuat kamus metode aman safe_dict = dict ([(k, local (). get (k, None)) untuk k di safe_list]) function_creator ()

Masukan dari Pengguna

Masukkan fungsi (dalam hal x): secret_function ()

Masukkan nilai x: 0

Keluaran:

NameError: nama 'secret_function' tidak ditentukan

Seperti yang Anda lihat dengan membatasi akses eval, kemungkinan kesalahan keluaran yang terbukti berbahaya telah ditiadakan.

Kegunaan Eval

Seperti yang dijelaskan pada bagian di atas, karena beberapa alasan keamanan eval tidak begitu umum digunakan. Namun tetap saja, ada kasus penggunaan tertentu yang menggunakan eval terbukti membantu. Beberapa di antaranya yang paling penting adalah.

  1. Jika Anda ingin pengguna memasukkan scriptlet mereka sendiri untuk mengubah keluaran program, maka menggunakan fungsi eval akan terbukti membantu.

  2. Saat menulis ekspresi untuk menyelesaikan kueri matematika, Anda dapat menggunakan eval karena jauh lebih mudah daripada menulis parser ekspresi.

Sekarang setelah Anda mengetahui semua tentang eval, kami berharap Anda akan menggunakan hal yang sama dalam pemrograman sehari-hari sambil tetap mengingat keuntungan dan kekurangannya.

Dengan ini, kita sampai pada akhir artikel Evaluasi dengan Python ini. Untuk mendapatkan pengetahuan mendalam tentang Python beserta berbagai aplikasinya, Anda bisa untuk pelatihan online langsung dengan dukungan 24/7 dan akses seumur hidup.

Ada pertanyaan untuk kami? Sebutkan mereka di bagian komentar 'Evaluasi dengan Python' dan kami akan menghubungi Anda kembali.