Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengenalan kepada fungsi Python: fungsi dan contoh penggunaan fungsi kompil

Pengenalan kepada fungsi Python: fungsi dan contoh penggunaan fungsi kompil

王林
王林asal
2023-11-04 09:32:181667semak imbas

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)

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)

Hasil keluaran kod ialah:

Hello, world!

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)

Hasil keluaran kod ialah:

3

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)

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

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!

Kenyataan:
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