Memahami Perbezaan Invokasi dalam Pelaksanaan Kod Python dengan -m
Penterjemah Python menyediakan pilihan -m, yang membolehkan anda melaksanakan modul perpustakaan sebagai skrip dalam modul __main__. Pendekatan ini berbeza daripada menjalankan skrip secara terus tanpa pilihan -m, yang membawa kepada perbezaan dan implikasi tertentu.
Perbezaan Praktikal
Apabila menggunakan -m, Python mengurus pakej secara berbeza. Jika anda cuba melaksanakan pakej tanpa -m, jurubahasa akan menganggapnya sebagai skrip biasa. Sebaliknya, dengan -m, pakej boleh diimport dan import relatif akan menganggap pakej dengan betul sebagai titik permulaan.
Sebagai contoh, pertimbangkan kod berikut dalam a.py:
<code class="py">if __name__ == "__main__": print(__package__) print(__name__)</code>
Menjalankan python a.py menghasilkan:
None __main__
Manakala, menggunakan python -m a menghasilkan:
"" __main__
Di sini, pembolehubah __package__ kosong dalam kes pertama kerana fail itu dilaksanakan sebagai skrip. Dengan -m, __package__ ditetapkan kepada rentetan kosong kerana modul tidak berada dalam pakej.
Penjelasan pakej dan nama
Untuk __package__:
Untuk __name__:
Implikasi untuk Pelaksanaan Pakej
Menjalankan pakej sebagai skrip dengan -m memerlukan modul __main__.py dalam pakej. Modul ini bertindak sebagai titik masuk apabila Python melaksanakan pakej menggunakan suis -m.
Atas ialah kandungan terperinci Apakah Perbezaan dalam Invocation apabila Melaksanakan Kod Python dengan -m?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!