1.modullar bn ishlash
Modul bu loyihamiz ichidagi alohida fayl bo'lib, dasturimiz davomida ishlatiladigan funskyalarni (va o'zgaruvchilarni) mana shu faylga joylab, ko'zdan yashirib qo'yishimiz mumkin. Bu bizga asosiy dasturimizdan chalg'imasdan kod yozish imkoniyatini beradi.
MODUL YARATAMIZ Modul yaratish uchun asosiy dasturimizdagi funksiyalarni yangi faylga ko'chiramiz xolos. Modulga oson murojat qilishimiz uchun, faylimiz asosiy dasturimiz bilan bitta papkada bo'lgani afzal. Bunda adashib ketmaslik uchun, loyihangizning (dasturning) asosiy faylini main.py deb nomlash o'rinli.
Keling, biz ham avto_info_mod.py degan fayl yaratamiz va ichiga quyidagi 3 ta funksiyalarni joylaymiz:
1def avto_info(kompaniya, model, rangi, korobka, yili, narhi=None):
2"""Avtomobil haqidagi ma'lumotlarni lug'at ko'rinishida qaytaruvchi funksiya"""
3avto = {'kompaniya':kompaniya,
4'model':model,
5'rang':rangi,
6'korobka':korobka,
7'yil':yili,
8'narh':narhi}
9return avto
10
11def avto_kirit():
12"""Foydalanuvchiga avto_info funksiyasi yordamida bir nechta avtolar haqida ma'lumotlarni bitta ro'yxatga joylash imkonini beruvchi funksiya"""
13avtolar=[] # salondagi avtolar uchun bo'sh ro'yxat
14while True:
15print("\nQuyidagi ma'lumotlarni kiriting",end='')
16kompaniya=input("Ishlab chiqaruvchi: ")
17model=input("Modeli: ")
18rangi=input("Rangi: ")
19korobka=input("Korobka: ")
20yili=input("Ishlab chiqarilgan yili: ")
21narhi=input("Narhi: ")
22#Foydalanuvchi kiritdan ma'lumotlardan avto_info yordamida
23#lug'at shakllantirib, har bir lug'atni ro'yxatga qo'shamiz:
24avtolar.append(avto_info(kompaniya, model, rangi, korobka, yili, narhi))
25# Yana avto qo'shish-qo'shmaslikni so'raymiz
26javob = input("Yana avto qo'shasizmi? (yes/no): ")
27if javob=='no':
28break
29return avtolar
30
31def info_print(avto_info):
32"""Avtomobillar haqida ma'lumotlar saqlangan lug'atni konsolga chiqaruvchi funksiya"""
33print(f"{avto_info['rang'].title()} {avto_info['kompaniya'].upper()} "
34f"{avto_info['model'].upper()}, {avto_info['korobka']} korobka, "
35f"{avto_info['yil']}-yil, {avto_info['narh']}$")
MODULNI CHAQIRIB OLISH
Modul ichidagi istalgan funksiyaga murojat qilish uchun import modul_nomi komandasidan foydalanamiz. Bunda modul ichidagi istalgan funksiyaga modul_nomi.funksiya_nomi() ko'rinishida murojat qilishimiz mumkin. Ya'ni avval modul nomi undan keyin esa nuqta qo'yilib, modul ichidagi funksiya nomi yoziladi.
MODULGA QISQA NOM BERISH
Yuqoridagi usul bilan modulni chaqirib olishda fayl nomi uzun bo'lsa bu o'ziga yarasha noqulayliklar tug'dirishi mumkin. Buning oldini olish uchun esa, modulni chaqirganda unga as operatori yordamida qisqa nom berishimiz, va modulga qisqa nom orqali murojat qilish mumkin.
4.iteratorlar,konteynerlar va sonlar
Iteratorlar
Itaratorlar bilan ko‘rsatkichlar kabi ishlash mumkin. Ularga *, inkrement,
dekrement operatorlarni qo‘llash mumkin. Iterator tipi sifatida xar xil
konteynerlarda aniqlangan iterator tip elon qilinadi.
Itoratorlarning beshta tipi mavjud:
1.Kiritish iteratorlar (input_iterator) tenglik, nomini o‘zgartirish va inkrementa
operatsiyalarni qo‘llaydi. ==, !=, *i, ++i, i++, *i++ Kiritish iteratsiyasining maxsus xolati istream_iterator iborat.
2. Chiqarish iteratorlar (output_iterator) o‘zlashtirish operatorning chap tarafidan
imkon bo‘lgan isimning o‘zgartirish va inkrementa operatsiyalar qo‘llanadi. ++i, i++, *i=t, *i++=t
Chiqarish iteratsiyasining maxsus xolati ostream_iterator.
3. Bitta yo‘nalishdagi iteratorlar (forward_iterator) kiritish/chiqarish
operatsiyalarning barchasini qo‘llaydi,bundan tashqari chegarasiz o‘zlashtirishning imkonini beradi.
==, !=, =, *i, ++i, i++, *i++
4.Ikki yo‘nalishdagi iteratorlar (biderectional_iterator) forward-iteratorlarning
barcha xususiyatlariga ega, bundan tashqari, konteynerni ikkita yo‘nalishi bo‘yicha
o‘tish imkonini beradigan qo‘shimcha dekrementa (--i, i--, *i--) operatsiyasiga ega.
5.Ixtiyoriy ruxsatga ega bo‘lgan iteratorlar (random_access_iterator)
biderectional-iteratorlarning barcha xususiyatlariga ega, bundan tashqari
solishtirish va manzil arifmetikasi operatsiyalarni qo‘llaydi. i+=n, i+n, i-=n, i-n, i1-i2, i[n], i1i2, i1>=i2
Do'stlaringiz bilan baham: |