16-dars: Modul va import
4-blokO'z buyruqlaringizni yasash13–16 darslar
Bu darsdan keyin siz
- o’z faylingizni modul sifatida import qilasiz
importbajarilganda Python nima qilishini bosqichma-bosqich aytasiz- fayl nomlash qoidasi nega muhim ekanini sabab bilan tushuntirasiz
Nazariya
“Nazariya” bo'limiga havolaModul — oddiy .py fayl
“Modul — oddiy .py fayl” bo'limiga havolaModul yasash uchun maxsus hech narsa qilish kerak emas. Har .py fayl modul:
uni yonidagi boshqa fayldan import qilish mumkin.
modulmodule
Import qilinadigan .py fayl. Ichidagi funksiya va o’zgaruvchilar modul.nom
ko’rinishida ishlatiladi.
# matematika.py faylidef kvadrat(son): return son * sondef kub(son): return son * son * son# asosiy.py fayli — yonidagi modulni ishlatadiimport matematikaprint(matematika.kvadrat(5)) # 25print(matematika.kub(3)) # 27Import ning uch shakli
“Import ning uch shakli” bo'limiga havolaimport matematika butun modulni oladi va nomlar matematika. prefiksi bilan
ishlatiladi. from matematika import kvadrat faqat bitta nomni oladi va prefiks
kerak bo’lmaydi. import matematika as m esa qisqa nom beradi.
from matematika import kvadratprint(kvadrat(5)) # prefiks kerak emasimport matematika as mprint(m.kub(3)) # qisqa nomfrom modul import * shakli ham bor, lekin u ishlatilmaydi: qaysi nom qayerdan
kelganini bilib bo’lmaydi va nomlar bir-birini bosib qo’yishi mumkin.
Import aslida nima qiladi
“Import aslida nima qiladi” bo'limiga havolaimport uch ish bajaradi. Modul faylini topadi, uni bir marta bajaradi
(ya’ni ichidagi barcha qatorlarni ishga tushiradi) va natijani eslab qoladi.
Ikkinchi qism kutilmagan bo’lishi mumkin: modul ichidagi print import paytida
ishlaydi. Uchinchisi ham muhim — bir modul ikki marta import qilinsa, fayl
faqat bir marta bajariladi.
Python faylni qayerdan izlaydi
“Python faylni qayerdan izlaydi” bo'limiga havolaQidiruv tartibi qat’iy: allaqachon yuklangan modullar, o’rnatilgan modullar, skript papkasi, keyin standart kutubxona va o’rnatilgan paketlar.
Uchinchi qadam eng muhimi. Skript papkasi standart kutubxonadan oldin
tekshiriladi — demak papkangizdagi random.py fayli standart random modulini
bosib qo’yadi.
Bu qoida 0-darsda “fayl nomlash qoidalari” sifatida aytilgan edi. Endi sababi ma’lum.
Bashorat qiling
“Bashorat qiling” bo'limiga havolaAvval o'ylang: bu kod nima chiqaradi? Ishga tushirishdan oldin yozing.
# salom.py fayli:# print("salom.py ishga tushdi")# def salomlash():# return "Salom!"# Endi asosiy.py:import salomimport salomprint(salom.salomlash())Haqiqiy natija:
salom.py ishga tushdi Salom!
Modul ikki marta import qilingan, lekin fayl faqat BIR MARTA bajarildi. Ikkinchi import xotiradagi tayyor modulni oldi — shuning uchun birinchi qator bir marta chiqdi.
Javobni ko'rish
salom.py ishga tushdi Salom!
Modul ikki marta import qilingan, lekin fayl faqat BIR MARTA bajarildi. Ikkinchi import xotiradagi tayyor modulni oldi — shuning uchun birinchi qator bir marta chiqdi.
Avval o'ylang: bu kod nima chiqaradi? Ishga tushirishdan oldin yozing.
import mathprint(math.floor(7.9))print(math.ceil(7.1))print(math.sqrt(16))Haqiqiy natija:
7 8 4.0
math standart kutubxonadan keladi. sqrt har doim float qaytaradi — shuning uchun 4 emas, 4.0.
Javobni ko'rish
7 8 4.0
math standart kutubxonadan keladi. sqrt har doim float qaytaradi — shuning uchun 4 emas, 4.0.
Sinab ko’r
“Sinab ko’r” bo'limiga havolaUch variantni ketma-ket bajaring. Uchinchisi — random.py tuzog’i — sinfda
haqiqatan uchraydigan xato va uni bir marta ko’rgan o’quvchi takrorlamaydi.
Import yo'li
Variantni tanlab qadamlang: Python qaysi joyni qanday tartibda qidiradi. Klaviatura: → keyingi qadam.
Bu simulyatorda import bajarilganda Python fayllarni qaysi tartibda qidirishi ko'rsatiladi: yuklangan modullar, o'rnatilgan modullar, skript papkasi, standart kutubxona.
JavaScript'siz eng muhim xulosa: skript papkasi standart kutubxonadan OLDIN tekshiriladi. Shuning uchun papkangizda «random.py» fayli bo'lsa, import random sizning faylingizni oladi va standart kutubxonaga navbat kelmaydi.
Papka
Kod
- 1Allaqachon yuklangan modullarsys.modules
- 2O'rnatilgan modullarsys, math kabi
- 3Skript papkasisizning fayllaringiz
- 4Standart kutubxonarandom, csv, os
Xatoni toping
“Xatoni toping” bo'limiga havolaBu kod ataylab buzuq — xatoni toping
# Papkada: asosiy.py va random.py (o'zingiz yozgan fayl)import randomson = random.randint(1, 6)print(son)Python shunday javob beradi:
Traceback (most recent call last): File "asosiy.py", line 3, in <module> son = random.randint(1, 6) AttributeError: module 'random' has no attribute 'randint'
Sababi va tuzatish
import random sizning random.py faylingizni oldi, chunki skript papkasi standart kutubxonadan oldin qidiriladi. Sizning faylingizda randint funksiyasi yo'q.
Xato xabari aldamchi: “modulda bunday funksiya yo’q” deyilgan, lekin muammo funksiyada emas — noto’g’ri modul yuklangan.
Tuzatish: faylingizning nomini o’zgartiring, masalan mening_random.py.
Bundan tashqari papkada __pycache__ degan papka qolgan bo’lsa, uni ham
o’chirib tashlang.
Bir xil sababdan input.py, csv.py, math.py, string.py nomlari ham
ishlatilmaydi.
O’zingizni sinang
“O’zingizni sinang” bo'limiga havola1Modul yasash uchun nima qilish kerak?
Javobni ko'rish
Hech narsa. Har .py fayl modul — uni yonidagi fayldan import qilish
kifoya.
2import bajarilganda uch ish qiladi. Qaysilar?
Javobni ko'rish
Faylni topadi, uni bir marta bajaradi va natijani eslab qoladi. Ikkinchi import xotiradagi tayyorini oladi.
3Modul ichidagi print qachon ishlaydi?
Javobni ko'rish
Import paytida — modul bajarilganda. Shuning uchun modul faylida faqat e’lonlar qoldirilishi yaxshi.
4Nega faylni random.py deb nomlash mumkin emas?
Javobni ko'rish
Skript papkasi standart kutubxonadan oldin qidiriladi, demak sizning faylingiz
standart random modulini bosib qo’yadi.
5from modul import * nega ishlatilmaydi?
Javobni ko'rish
Qaysi nom qayerdan kelganini bilib bo’lmaydi va nomlar bir-birini bosib qo’yishi mumkin. Aniq import har doim aniqroq.
Topshiriq
“Topshiriq” bo'limiga havolaTopshiriq — darajangizni tanlang
Asos · 5–7-sinf — Vizual va aniq ko'rsatmali
hisob.py moduli yozing: ichida qoshish(a, b) va ayirish(a, b)
funksiyalari bo’lsin. Keyin asosiy.py faylidan uni import qilib, to’rtta
hisobni chop eting. Ikki fayl bir papkada bo’lishi kerak.
Mustahkam · 8–9-sinf — Matnli masala, o'zingiz tuzasiz
Oldingi darslarda yozgan funksiyalaringizni bitta modulga yig’ing va
asosiy.py dan chaqiring. Modul boshiga print("modul yuklandi") qo’shib,
ikki marta import qilib ko’ring — natijani izohlang. Keyin import ning uch
shaklini ham sinab, qaysi holatda qaysi biri qulay ekanini yozing.
Chuqur · 10–11-sinf — Algoritmik, chegara holatlari bilan
random.py tuzog’ini ataylab yasang: papkada shunday fayl ochib, import random qiling va xatoni oling. Keyin uni tuzatib, __pycache__ papkasi
nima uchun kerakligini aniqlang. Oxirida uch qoidali ro’yxat yozing: fayl
nomlashda nima qilinmaydi va nega — har qoidaga sabab qo’shing.
Darsni belgilash uchun JavaScript kerak. Bu progressni saqlash uchun ishlatiladi — darslikning o'zi JavaScript'siz ham to'liq o'qiladi.