Rumah > pembangunan bahagian belakang > Tutorial Python > Apakah Perbezaan dalam Invocation apabila Melaksanakan Kod Python dengan -m?

Apakah Perbezaan dalam Invocation apabila Melaksanakan Kod Python dengan -m?

DDD
Lepaskan: 2024-10-22 21:28:30
asal
949 orang telah melayarinya

What are the Differences in Invocation when Executing Python Code with -m?

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>
Salin selepas log masuk

Menjalankan python a.py menghasilkan:

None
__main__
Salin selepas log masuk

Manakala, menggunakan python -m a menghasilkan:

""
__main__
Salin selepas log masuk

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 skrip yang dijalankan tanpa -m, __package__ ditetapkan kepada Tiada kerana ia tidak boleh menjadi pakej.
  • Untuk modul yang dijalankan dengan -m yang berada dalam pakej, __package__ ditetapkan kepada nama pakej.

Untuk __name__:

  • Ia merujuk kepada modul utama yang dibuat semasa menjalankan skrip.
  • Untuk pakej yang dijalankan dengan -m, ia merujuk kepada ruang nama global yang disimpan dalam sys.modules['__main__']. Modul utama dalam pakej dilaksanakan apabila menjalankan pakej dengan -m.

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!

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