Pythonda main() funksiyasi nima?
Ba'zi dasturlash tillarida dastur faylining bajarilish nuqtasi bo'lgan main() deb ataluvchi maxsus funksiya mavjud. Biroq, Python interpretatori har bir qatorni fayl boshidan ketma-ket ishga tushiradi va aniq main() funksiyasiga ega emas.
Python bajarilish nuqtasini belgilash uchun boshqa konvensiyalarni taklif etadi. Ulardan biri — main() funksiyasi va Python faylining __name__ xususiyatidan foydalanish.
__name__ o'zgaruvchisi — joriy modulning nomini ko'rsatuvchi maxsus tayyor (built-in) Python o'zgaruvchisi.
U Python faylini qayerda ishga tushirishimizga qarab turli qiymatlarga ega bo'ladi. Keling, bir misolni ko'rib chiqamiz.
Aytaylik, bizda quyidagi kontentga ega helloworld.py nomli Python faylimiz bor:
print(__name__)
Agar helloworld.pyni buyruqlar qatoridan ishga tushirsak, u Python skripti sifatida ishlaydi. Python dasturini quyidagi buyruq yordamida ishga tushirishimiz mumkin:
$ python helloworld.py
Dasturni skript sifatida ishga tushirganimizda, __name__ o'zgaruvchisining qiymati __main__ga o'rnatiladi. Shunday qilib, quyidagi dasturning natijasi bunday bo'ladi:
__main__
Python faylini modul sifatida ham ishga tushirishimiz mumkin. Buning uchun, bu faylni boshqa Python dasturiga import qilishimiz kerak. Keling, bir misolni ko'rib chiqamiz.
Aytaylik, bizda helloworld.py fayli bilan bir xil papkada main.py nomli Python faylimiz bor. U quyidagi kontentga ega:
import helloworld
Bu faylni ishga tushirganimizda, quyidagi natijaga ega bo'lamiz:
helloworld
Bu yerda ko'rib turganimizdek, modulni import qilish modul faylidagi barcha kodni ham ishga tushiradi.
Lekin, ko'rib turganimizdek, __main__ ko'rsatish o'rniga, dastur modulning nomini, ya'ni helloworldni ko'rsatadi.
Buning sababi, Python faylini modul sifatida ishga tushirish kontekstida, modulning o'z nomi __name__ o'zgaruvchisiga beriladi.
Endi __name__ o'zgaruvchisiga qanday qiymatlar berilishini tushunganimizdan so'ng, xuddi shu Python faylini turli kontekstlarda turlicha ishga tushirish uchun if shart operatoridan foydalanishimiz mumkin.
Keling, bir misolni ko'rib chiqamiz.
Aytaylik, helloworld.py faylining kontentini quyidagicha o'zgartiramiz:
def main():
print("Hello World")
if __name__=="__main__":
main()
Endi, uni buyruqlar qatori orqali skript sifatida ishga tushirganimizda, natija bunday bo'ladi:
Hello World
Biroq, uni main.py fayliga import qilib, modul sifatida ishga tushirganimizda, main() funksiyasi chaqirilmagani uchun hech qanday natija ko'rsatilmaydi.
Bu yerda biz helloworld.py faylida maxsus main() funksiyasini yaratdik. U faqat dastur mustaqil skript sifatida ishga tushirilganda bajariladi, import qilingan modul sifatida emas.
Bu Pythonda main() funksiyasini aniq belgilashning standart usuli. Bu Python faylining __name__ o'zgaruvchisining eng mashhur qo'llanilish holatlaridan biri.
Ko'proq o'qing: Python Functions