AXV

DRY va funksiyalar

DRY, def, parametr va return, standart qiymat, dict bilan DRY

9-sinfAdvanced Back-end va DevOps6-hafta · 16-dars

Bugun nimalarni o'rganamiz?

DRY prinsipi

Takrorlama

def va return

Funksiya yozish

dict bilan DRY

if/elif o'rniga

Takrorlash

Lug'atdan kalit orqali qiymat qanday olinadi?

Kvadrat qavs yoki get().
01

DRY prinsipi

Takrorlama

DRY ga yo'l

Takrorniko'ring Funksiyagaajrating Argumentbering Hamma joydachaqiring Bitta manba — bitta o'zgartirish

DRY emas va DRY


# DRY emas: bir xil formula 3 marta
a = 200 - 200 * 10 / 100
b = 500 - 500 * 20 / 100
c = 90 - 90 * 5 / 100

# DRY: formula bitta joyda
def chegirma(narx, foiz):
    return narx - narx * foiz / 100

print(chegirma(200, 10))   # 180.0
print(chegirma(500, 20))   # 400.0
print(chegirma(90, 5))     # 85.5
  
Qoida: bir xil kodni ikkinchi marta yozayotgan bo'lsangiz — to'xtang va funksiya qiling. Uch marta takrorlangan kod — funksiya uchun qat'iy signal.

Mini-test

DRY nimani anglatadi?

Don't Repeat Yourself.
02

def va return

Funksiya yozish

Funksiya tuzilishi

defnom(parametr): Tana (4bo'shliq) return natija Chaqirish:nom(arg) Funksiya = nom + parametr + natija

Funksiya turlari


def salom_ber():
    print("Salom, Python!")

def salom(ism="Mehmon"):
    return f"Salom, {ism}!"

def yigindi(a, b):
    return a + b

salom_ber()                  # Salom, Python!
print(salom())               # Salom, Mehmon!
print(salom("Ali"))          # Salom, Ali!
natija = yigindi(3, 4) * 2
print(natija)                # 14
  
Funksiya ichida natijani faqat print qilsangiz, uni keyin hisobda ishlata olmaysiz: yigindi(3, 4) * 2 ishlashi uchun return kerak.

Mini-test

return bo'lmagan funksiya nimani qaytaradi?

None.
03

dict bilan DRY

if/elif o'rniga

dict bilan soddalashtirish

if/elifzanjiri Lug'at: kalit→ qiymat get(kalit,standart) Yangi qiymat— bitta qator Ma'lumotni kodga emas, lug'atga yozing

Til bo'yicha salomlashuv


texts = {
    "uz": "Assalomu alaykum!",
    "ru": "Zdravstvuyte!",
    "en": "Hello!",
}

def salomlash(til):
    return texts.get(til, texts["en"])

def chegara(sonlar):
    return min(sonlar), max(sonlar)

print(salomlash("uz"))      # Assalomu alaykum!
print(salomlash("de"))      # Hello! (topilmadi, standart)
kichik, katta = chegara([4, 9, 1, 7])
print(kichik, katta)        # 1 9
  
Kalit bo'lmasa texts["de"] KeyError beradi, texts.get("de", ...) esa standart qiymat qaytaradi.

Mini-test

Uzun if/elif o'rniga qaysi tuzilma qulay?

Kalit → qiymat juftliklari.

print va return

print()

Ekranga chiqaradi; qiymat dasturda qolmaydi
VS

return

Qiymatni funksiya chaqirilgan joyga qaytaradi

Hisob uchun return, ko'rsatish uchun print.

Atamalar. Bosing

DRY

bosing

Kodni takrorlamaslik prinsipi

def

bosing

Funksiya e'lon qilish kalit so'zi

Parametr

bosing

E'londagi nom: def f(a, b)

Argument

bosing

Chaqirishdagi qiymat: f(3, 4)

Funksiya yozish

1. Takrorni toping

Bir xil kod.

2. def yozing

Parametr va return.

3. Chaqiring

Turli argument bilan.

Funksiya qismlari

QismMisolVazifa
defdef chegirma(...)E'lon boshlanishi
Parametrnarx, foizKiruvchi nom
Tana4 bo'shliq surilganIsh bajariladi
returnreturn narx - ...Natija qaytadi
Chaqirishchegirma(200, 10)Funksiyani ishlatish

Pastga bosing: funksiya qismlari

Do'kon hisobi

  1. Takrorlanuvchi chegirma kodini yozing (3 marta).
  2. Uni chegirma(narx, foiz) funksiyasiga aylantiring.
  3. Funksiyani 3 xil argument bilan chaqiring va natijani chiqaring.

Funksiya natijasi


def kvadrat(x):
    print(x * x)

natija = kvadrat(4) + 1
  

Funksiya natijasi


def kvadrat(x):
    return x * x

natija = kvadrat(4) + 1
  

Funksiyalar raqamlarda

0
marta takrorlangan kod — funksiya uchun signal
0
bo'shliq — tana surilishi
0
ish — bitta funksiya vazifasi

Kichik, aniq nomli funksiyalar yozing.

Amaliy topshiriq 20 daqiqa

OsonFunksiya yozing: Ikki sonni qo'shib qaytaradigan yigindi(a, b) yozing.
OsonSalom funksiyasi: Standart ismi «Mehmon» bo'lgan salom(ism) yozing.
O'rtaChegirma: chegirma(narx, foiz) funksiyasini yozing va 3 marta chaqiring.
O'rtaformat_user: Ism va yoshni «Ali — 20 yosh» ko'rinishida qaytaradigan funksiya yozing.
Qiyindict bilan salom: Til bo'yicha salom beradigan funksiya yozing (uz, ru, en); noma'lum til — inglizcha.
BonusEng kichik va eng katta: Sonlar ro'yxatidan eng kichik va eng katta sonni qaytaring.

Dars xulosasi

DRY

Takrorlama — bug manbai.

def va return

Parametr, argument, natija.

dict bilan DRY

if/elif o'rniga lug'at.

Uyga vazifa: DRY va funksiyalar: chegirma, salomlashuv.

Keyingi dars: try/except

Xatolarni boshqarish

6-hafta · 17-dars