Rumah > pembangunan bahagian belakang > Tutorial Python > Apakah Perbezaan Antara Fungsi `eval`, `exec` dan `compile` Python?

Apakah Perbezaan Antara Fungsi `eval`, `exec` dan `compile` Python?

Patricia Arquette
Lepaskan: 2024-12-11 18:17:10
asal
653 orang telah melayarinya

What are the Differences Between Python's `eval`, `exec`, and `compile` Functions?

Perbezaan Antara eval, exec dan compile

Pengenalan

Python menyediakan tiga alatan berkuasa untuk melaksanakan kod secara dinamik: eval, exec dan compile . Setiap satu mempunyai tujuan tertentu, dan penting untuk memahami perbezaan mereka.

eval

Eval digunakan untuk menilai satu ungkapan. Ia memerlukan rentetan yang mewakili ungkapan dan mengembalikan nilainya. Contohnya:

a = 5
result = eval('a + 10')
print(result)  # Output: 15
Salin selepas log masuk

exec

Exec digunakan untuk melaksanakan blok kod. Ia memerlukan rentetan yang mewakili kod dan mengembalikan Tiada. Contohnya:

my_code = """
for i in range(5):
    print(i)
"""

exec(my_code)
# Output:
# 0
# 1
# 2
# 3
# 4
Salin selepas log masuk

compile

Compile digunakan untuk menyusun kod ke dalam bytecode, yang kemudiannya boleh dilaksanakan oleh penterjemah. Ia memerlukan rentetan yang mewakili kod dan mod ('eval', 'exec' atau 'single').

Dalam mod 'eval', kompilasi menyusun satu ungkapan ke dalam bytecode yang mengembalikan nilai ungkapan. Dalam mod 'exec', ia menyusun blok kod ke dalam bytecode yang mengembalikan Tiada. Dalam mod 'tunggal', ia menyusun satu pernyataan atau ungkapan ke dalam bytecode yang mencetak repr nilai ungkapan.

Contohnya:

bytecode = compile('a + 10', 'my_code', 'eval')
result = eval(bytecode)
print(result)  # Output: 15

bytecode = compile("""
for i in range(5):
    print(i)
""", 'my_code', 'exec')
exec(bytecode)
# Output:
# 0
# 1
# 2
# 3
# 4
Salin selepas log masuk

Ringkasan

Function What it does
eval Evaluates a single expression
exec Executes a block of code
compile Compiles code into bytecode

Atas ialah kandungan terperinci Apakah Perbezaan Antara Fungsi `eval`, `exec` dan `compile` Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan