Pengenalan kepada fungsi Python: fungsi dan contoh penggunaan fungsi kompil

王林
Lepaskan: 2023-11-04 09:32:18
asal
1627 orang telah melayarinya

Pengenalan kepada fungsi Python: fungsi dan contoh penggunaan fungsi kompil

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:

3
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!