Rumah >pembangunan bahagian belakang >Tutorial Python >Apakah tujuan suis `-m` Python?

Apakah tujuan suis `-m` Python?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-27 05:23:10864semak imbas

What is the purpose of Python's `-m` switch?

Menyingkap Tujuan Suis -m Python

Latar Belakang: Menyusun Modul Python

Modul Python, unit asas organisasi, terdapat dalam dua bentuk: modul kod dan modul pakej. Modul kod terdiri daripada kod Python boleh laku, manakala modul pakej merangkumi direktori yang mengandungi modul lain.

Python memberikan pengecam unik kepada modul, yang dikenali sebagai nama modul dan nama fail. Biasanya, modul dikenal pasti dengan nama modul dalam kod Python dan nama fail pada baris arahan. Python menterjemah nama modul kepada nama fail dengan lancar menggunakan pembolehubah sys.path.

Pembukaan -m

Diperkenalkan dalam Python 2.4.1, suis -m pada asalnya mendayakan pelaksanaan modul daripada arahan baris berdasarkan nama modul mereka. Ini memberikan alternatif kepada menentukan nama fail. Dalam lelaran awalnya, -m hanya menyokong nama modul peringkat teratas.

PEP 338 dilanjutkan -m untuk mengendalikan perwakilan nama modul yang lebih kompleks, membenarkan pelaksanaan modul bersarang seperti http.server. Tambahan pula, ia mewajibkan penilaian semua fail __init__.py pakej induk.

Kemajuan utama terakhir datang dengan PEP 366, memberikan -m keupayaan untuk menyokong bukan sahaja import relatif mutlak tetapi juga eksplisit. Ini dicapai dengan menetapkan pembolehubah pakej kepada modul induk bagi nama modul yang diberikan.

Aplikasi Praktikal -m

  • Melaksanakan Modul dengan Tidak Diketahui Nama fail: Memandangkan ramai pengguna Python biasa dengan nama modul tetapi tidak semestinya nama fail mereka, -m menjadi tidak ternilai untuk melaksanakan modul dari baris arahan. Contohnya, melaksanakan modul http.server dipermudahkan menggunakan python -m http.server.
  • Melaksanakan Pakej Tempatan tanpa Pemasangan: Secara lalai, -m menambah direktori kerja semasa kepada sys. laluan, membolehkan pelaksanaan pakej tempatan yang mengandungi import mutlak atau relatif. Tingkah laku ini menghapuskan keperluan untuk memasang pakej untuk tujuan pembangunan.

Keterbatasan -m

Walaupun keupayaannya, -m adalah terhad kerana ia hanya boleh melaksanakan modul yang ditulis dalam Python (fail .py). Modul kod yang disusun C tidak disokong.

Analisis Perbandingan

Pelaksanaan Modul melalui Penyata Import:

  • Tiada pengubahsuaian pada sys.path
  • nama ditetapkan kepada mutlak modulename
  • pakej ditetapkan kepada pakej induk segera
  • __init__.py dinilai untuk semua pakej
  • __main__.py dinilai untuk modul kod

Pelaksanaan Modul melalui Baris Perintah dengan Nama fail :

  • sys.path diubah suai untuk memasukkan direktori modul
  • nama ditetapkan kepada '__main__'
  • pakej ditetapkan kepada Tiada
  • __init__.py tidak dinilai untuk sebarang pakej
  • __main__.py dinilai untuk kedua-dua modul pakej dan kod

Pelaksanaan Modul melalui Baris Perintah dengan Nama Modul (-m):

  • sys.path diubah suai untuk memasukkan arus direktori
  • nama ditetapkan kepada '__main__'
  • pakej ditetapkan kepada pakej induk segera
  • __init__.py dinilai untuk semua pakej
  • __main__.py dinilai untuk kedua-dua pakej dan kod modul

Kesimpulan

Suis -m berfungsi sebagai alat yang berkuasa untuk melaksanakan modul Python daripada baris arahan. Keupayaannya untuk menukar nama modul kepada nama fail, melaksanakan pakej tempatan dan menyokong import relatif menyediakan cara yang mudah dan serba boleh untuk mengurus kod Python. Walaupun terhad untuk melaksanakan modul berasaskan Python, -m kekal sebagai aset yang tidak ternilai untuk pembangun Python.

Atas ialah kandungan terperinci Apakah tujuan suis `-m` Python?. 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