Daftar Referensi Python
eval() adalah fungsi bawaan untuk mengevaluasi satu ekspresi Python dari string atau code object, lalu mengembalikan hasil ekspresi tersebut.
Peringatan keamanan: jangan pernah memberikan input pengguna atau teks yang tidak tepercaya langsung ke eval(). Fungsi ini dapat menjalankan code berbahaya.
Sintaks
eval(source, globals=None, locals=None)
Parameter
| Parameter | Wajib? | Keterangan |
|---|---|---|
source |
Ya | Ekspresi Python dalam bentuk string atau code object |
globals |
Tidak | Dictionary untuk namespace global yang tersedia bagi ekspresi |
locals |
Tidak | Mapping untuk namespace lokal yang tersedia bagi ekspresi |
Nilai balik: hasil dari ekspresi yang dievaluasi. Tipe hasil bergantung pada ekspresinya.
Contoh
ekspresi = "10 + 5 * 2"
hasil = eval(ekspresi)
print(hasil)
Output:
20
Contoh Lainnya
Menyediakan nama lewat locals
rumus = "panjang * lebar"
data = {"panjang": 8, "lebar": 5}
global_terbatas = {"__builtins__": {}}
hasil = eval(rumus, global_terbatas, data)
print(hasil)
Output:
40
Membatasi __builtins__ membantu mengurangi nama yang tersedia, tetapi bukan mekanisme keamanan. Ekspresi pada contoh tetap harus berasal dari sumber yang kamu percaya.
Gunakan ast.literal_eval() untuk data literal
import ast
teks = '["apel", "mangga"]'
hasil = ast.literal_eval(teks)
print(hasil)
print(type(hasil).__name__)
Output:
['apel', 'mangga']
list
eval() menerima ekspresi, bukan pernyataan
try:
eval("x = 10")
except SyntaxError:
print("eval() hanya menerima ekspresi")
Output:
eval() hanya menerima ekspresi
Kesalahan Umum
- Memasukkan teks dari
input()langsung keeval()dapat memberi penyerang kemampuan menjalankan code. Hindari pola ini. - Pernyataan seperti assignment,
import, atau loop bukan ekspresi dan menghasilkanSyntaxError. - Nama yang tidak tersedia di namespace menghasilkan
NameError. - Untuk membaca list, dictionary, angka, string, tuple, set, boolean, atau
Nonedari teks, gunakanast.literal_eval()sebagai pilihan yang lebih terbatas.
Pelajari Lebih Lanjut
- Referensi: try-except di Python · Tipe data dasar · input() di Python
- Buku Belajar Python untuk Pemula: Bab 15 dan Bab 16
