Pengenalan kepada fungsi Python: fungsi dan contoh penggunaan fungsi kompilasi
Dalam pengaturcaraan Python, fungsi compile() ialah fungsi terbina dalam, dan fungsinya adalah untuk menyusun kod Python dalam bentuk rentetan menjadi kod bait atau objek AST. Selepas penyusunan, kod boleh dijalankan dengan melaksanakan bytecode atau objek AST. Dalam artikel ini, kami akan memberikan pengenalan terperinci kepada fungsi dan penggunaan fungsi penyusun dan menyediakan beberapa contoh kod praktikal.
Sintaks dan parameter fungsi kompilasi
Sintaks fungsi kompilasi adalah seperti berikut:
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
Salin selepas log masuk
Antaranya, maksud parameter adalah seperti berikut:
- sumber: Kod Python dalam bentuk rentetan; nama fail: nama fail di mana kod itu terletak. Jika kod tidak datang daripada fail, anda boleh menggunakan mana-mana pengecam yang boleh dikenal pasti, seperti "";
"exec": Jika kod ialah pernyataan Python atau sekumpulan pernyataan, mod ini digunakan "eval": Jika kod ialah ungkapan Python, mod ini digunakan
"single": Jika kod adalah input interaktif yang berasingan, gunakan mod ini. - bendera: Bendera digunakan untuk mengawal pengkompil. Parameter pilihan:
PyCF_SOURCE_IS_UTF8: Jika kod sumber menggunakan pengekodan UTF-8, gunakan bendera ini; PyCF_IGNORE_COOKIE: Abaikan teg UTF-8 dalam kod sumber
ASTCF_ONLY_Py: ) ) objek, bukan bytecode. dont_inherit: Jika ditetapkan kepada Benar, tiada bendera diwarisi daripada skop induk. optimumkan: Integer yang menetapkan tahap pengoptimuman semasa penyusunan. Nilai lalai -1 melumpuhkan pengoptimuman.
- Nilai pulangan fungsi kompil
- Fungsi kompilasi mengembalikan objek kod, yang boleh diproses selanjutnya melalui exec(), eval(), atau API lain yang disediakan oleh modul ast.
Apabila menggunakan fungsi kompilasi, objek kod yang dikembalikan olehnya biasanya digunakan untuk melaksanakan penterjemah Python untuk menjalankan kod.
Contoh penggunaan fungsi compile
Berikut adalah beberapa contoh penggunaan fungsi compile. Dalam contoh ini, kami akan menggunakan fungsi kompilasi untuk menyusun beberapa kod Python mudah dan melaksanakan kod melalui fungsi exec().
Contoh 1: Menggunakan mod exec
Contoh berikut menggunakan mod exec, yang bermaksud kod sumber ialah satu set pernyataan Python. Kami akan menggunakan pernyataan cetak untuk mengeluarkan sesuatu.
source_code = "print('Hello, world!')"
compiled_code = compile(source_code, "<string>", "exec")
exec(compiled_code)
Salin selepas log masuk
Hasil keluaran kod ialah:
Hello, world!
Salin selepas log masuk
Contoh 2: Menggunakan mod eval
Contoh berikut menggunakan mod eval, yang bermaksud kod sumber ialah ungkapan Python. Kami akan mentakrifkan ungkapan mudah dalam rentetan yang menambah dua nombor menggunakan pengendali penambahan. Kami kemudian akan menggunakan fungsi eval() untuk menilai ungkapan dan mencetak hasilnya.
source_code = "1 + 2"
compiled_code = compile(source_code, "<string>", "eval")
result = eval(compiled_code)
print(result)
Salin selepas log masuk
Hasil keluaran kod ialah:
Contoh 3: Menggunakan mod AST
Contoh berikut menggunakan mod AST, yang bermaksud bahawa kod sumber akan disusun menjadi pokok sintaks abstrak. Kami akan mentakrifkan beberapa kod Python dalam rentetan yang menguji nilai pembolehubah menggunakan pernyataan bersyarat if/else dan mencetak hasilnya.
import ast
source_code = """
a = 5
if a > 0:
print('a is positive')
else:
print('a is non-positive')
"""
compiled_code = compile(source_code, "<string>", "exec", flags=ast.PyCF_ONLY_AST)
ast.dump(compiled_code)
exec(compiled_code)
Salin selepas log masuk
Hasil keluaran kod ialah:
If(test=Compare(left=Name(id='a', ctx=Load()), ops=[GreaterThan()], comparators=[Num(n=0)]), body=[Expr(value=Call(func=Name(id='print', ctx=Load()), args=[Str(s='a is positive')], keywords=[]))], orelse=[Expr(value=Call(func=Name(id='print', ctx=Load()), args=[Str(s='a is non-positive')], keywords=[]))])
a is positive
Salin selepas log masuk
Dalam contoh, kami menggunakan bendera PyCF_ONLY_AST dalam modul ast untuk menyusun kod ke dalam objek AST. Kami kemudian menggunakan fungsi ast.dump() untuk menukar objek AST ini kepada perwakilan rentetan dan mengeluarkan hasilnya. Fungsi
Kesimpulan
compile() ialah alat yang fleksibel dan berkuasa yang boleh membantu kami menukar kod Python daripada rentetan kepada objek kod boleh laku. Walaupun ia mempunyai pelbagai pilihan dan bendera, penggunaan biasa adalah untuk menyusun kod sumber ke dalam objek kod yang disusun dan menggunakan exec(), eval(), atau AST untuk melaksanakan kod tersebut. Jika anda ingin menulis kod Python yang lebih maju, fungsi kompilasi ialah alat yang mesti dikuasai.
Atas ialah kandungan terperinci Pengenalan kepada fungsi Python: fungsi dan contoh penggunaan fungsi kompil. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!