Mengapa tiada fungsi main() dalam Python?

王林
Lepaskan: 2023-08-28 11:05:06
ke hadapan
1149 orang telah melayarinya

Mengapa tiada fungsi main() dalam Python?

Dalam artikel ini, kita akan memahami mengapa tiada fungsi utama() dalam Python.

Tidak dinafikan Python tidak mempunyai yang dipanggil fungsi utama , tetapi, kira-kira "fungsi utama Python" dan "" sering dipetik di Internet sebagai cadangan untuk menulis Fungsi utama. "

Niat mereka mungkin untuk meniru pendekatan utama asal, tetapi banyak Terpedaya (atau salah faham) dan hasilkan kod yang sangat kompleks.

Sebelum bermula, kami akan menjawab dua soalan berikut -

  • Apakah sebenarnya "fungsi utama" itu?

  • Mengapa sesetengah bahasa pengaturcaraan perlu menggunakan fungsi utama?

Sesetengah bahasa pengaturcaraan, seperti C/C++, C#, Java, Go, Rust, dll., gunakan Sebagai titik masuk pelaksanaan program, fungsi utama mempunyai makna khusus -

  • Nama fungsi utama ini diperlukan, bermakna mesti ada fungsi utama Fungsi.

  • Disebabkan hanya ada satu fungsi utama, setiap entri dalam program adalah unik.

  • Format tatabahasa mempunyai keperluan khusus dan mengikut sangat konsisten (tetap) templat.

Kenapa kita mesti buat fungsi entri utama? Wajib?

Ini adalah bahasa tersusun yang memerlukan kod untuk disusun ke dalam fail boleh laku binari sistem pengendalian/pemuat but untuk mencari permulaan program, jadi anda Fungsi ini mesti ditakrifkan.

Ringkasnya, terdapat satu permulaan penting yang mesti ditakrifkan dalam sejumlah besar kandungan Kod boleh laku.

Ciri utama ialah ciri organik asas bahasa ini.

Tetapi apabila kita kembali kepada Python, keadaan berubah secara mendadak.

  • Python ialah bahasa yang ditafsirkan, juga dikenali sebagai bahasa skrip. ini Proses berjalan berjalan dari atas ke bawah, baris demi baris, yang bermaksud bahawa ia Titik permulaan diketahui.

  • Setiap .py fail ialah fail boleh laku yang boleh digunakan sebagai titik masuk program, bermakna pintu masuk program adalah fleksibel dan tidak perlu mengikut konvensyen Sudah mengikuti.

  • Apabila melaksanakan projek Python tanpa menyatakan fail masukan (semakin banyak Baris arahan biasa, seperti "python -m http.server 8000"), mungkin disebabkan oleh Terdapat fail main.py yang melakukan perkara berikut sebagai "fail" dalam pakej beroperasi.

Ringkasnya, bahasa skrip Python berbeza daripada bahasa yang disusun. ia boleh Pilih teknik pelaksanaan yang fleksibel pada tahap modul individu (iaitu fail .py), atau pada tahap pakej yang terdiri daripada banyak modul, tidak seperti bahasa lain yang tidak boleh Ini boleh dicapai tanpa penyertaan yang jelas.

Dalam erti kata lain, Python tidak memerlukan pengaturcara untuk menentukan entri bersatu (sama ada Ia adalah fungsi tahap sintaks, kelas atau lain-lain).

Sesetengah pengguna mungkin berasa keliru kerana mereka sering menemui atau menulis kod berikut -

# defining the main function using the def keyword
def main():
   ……
if __name__ == '__main__':
   main()
Salin selepas log masuk

Bukankah ini fungsi utama Python? Saya percaya ramai yang bersetuju! -

Tidak, bukan.

Kecuali nama fungsi ialah "utama", ia tidak mempunyai kaitan dengan utama ortodoks Fungsi yang kami terangkan sebelum ini, ia tidak diperlukan dan tidak semestinya mengawal pesanan pelaksanaan program. Tanpanya, ia tidak akan menyebabkan sebarang masalah sintaks.

Sesetengah orang ingin mengenal pasti fungsi "utama" untuk menekankan status "utama" dan Jadikan ini fungsi pertama yang akan dilaksanakan secara manual.

Mereka mungkin berpendapat bahawa fungsi dengan nama sedemikian lebih mudah diingati.

Mereka mungkin mahu menulis jika nama =='utama' untuk membuktikan bahawa main() hanya berjalan di bawah keadaan berikut Skrip semasa dilaksanakan secara langsung dan tidak boleh dilaksanakan apabila diimport. modul lain.

Namun, kami tidak mengesyorkan gaya penulisan ini.

Contoh yang paling biasa: hanya beberapa dozen baris kod atau fail skrip Melaksanakan fungsi mudah (rangkak kecil, menggunakan penyu untuk melukis gambar, dsb.), Tetapi semuanya ditulis sama seperti sebelumnya.

Atas sebab-sebab berikut, tidak digalakkan menulis jika nama__ == '__utama' -

  • Pertama sekali, jika anda hanya mempunyai satu fail kerana tiada pilihan eksport.

  • 2. Jika terdapat berbilang fail, tulis ayat ini dalam fail entri (main.py) Sangat berkecil hati. Oleh kerana ia adalah titik permulaan, kandungannya tidak sepatutnya dieksport untuk digunakan dalam modul lain.

  • Akhirnya, penghakiman ini tidak boleh ditulis dalam fail bukan kemasukan dengan banyak fail. Disyorkan, kerana yang paling boleh anda lakukan ialah membuat beberapa ujian ini program. Walau bagaimanapun, kod ujian hendaklah diasingkan dan disimpan secara berasingan Direktori atau fail.

Setiap kali saya menghadapi kod yang begitu kompleks, saya akan bimbang tanpa berfikir. kenapa Adakah anda menulis pernyataan if? Kalau boleh asingkan fungsi utama, jangan pun Bungkusnya dalam fungsi!

ringkasan

  • Buang pemikiran inersia dan bina kod sebenar. Fungsi kemasukan utama Khusus untuk beberapa bahasa dan tidak boleh digunakan dalam Python. anda sepatutnya Fahami ciri-ciri bahasa skrip dan tulis dalam bahasa yang mudah dan mudah difahami Gaya yang menarik.

  • Gunakan main.py bukannya utama(). Kerana unit pelaksanaan program Python adalah Fail skrip dan bukannya fungsi atau kelas, fail masukan hendaklah dinamakan main.py, Kefungsian dalaman ditentukan oleh keperluan.

  • Jika boleh, gunakan main.py sebagai fail masukan. Fail ini sangat mudah untuk disusun dan digunakan Gunakan parameter "-m" pada baris arahan.

KESIMPULAN

Dalam artikel ini, kami mengetahui mengapa Python, tidak seperti bahasa pengaturcaraan lain, kekurangan Fungsi utama. Kami juga belajar tentang syarat __name__ == '__main__'.

Atas ialah kandungan terperinci Mengapa tiada fungsi main() dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
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