03-dars

Funksiyalar (functions) va kolleksiyalar (collections)

Kodni tashkil etish va «kalit-qiymat» strukturalari

Oʻtilgan mavzular

2-dars - sikllar (loops) va roʻyxatlar (lists)

  • while va for + range()
  • break va continue
  • Roʻyxatlar va indekslash
  • Kesmalar va qadamlar
  • Roʻyxat metodlari
  • Kolleksiyalarni aylantirish

1-dars, esda tutamiz

Oʻzgaruvchilar va turlar

Har bir qiymatning oʻz turi bor. Python uni avtomatik aniqlaydi.

name = "Alisa" age = 30 price = 19.99 is_admin = True print(type(age)) print(type(is_admin))
<class 'int'> <class 'bool'>

1-dars, esda tutamiz

Kiritish va konvertatsiya

input() doim satr qaytaradi. Son uchun int() yoki float() kerak.

# foydalanuvchi kiritdi: 5 n = int(input("Son: ")) print(n * 2)
Son: 5 10

1-dars, esda tutamiz

Shartlar if / elif / else

Har xil holatlar uchun har xil tarmoqlar. f-string qiymatlarni matnga qoʻshadi.

n = 5 if n > 0: print(f"{n}: musbat") elif n < 0: print(f"{n}: manfiy") else: print("nol")
5: musbat

2-dars, esda tutamiz

for sikli va range

Maʼlum marta takrorlash. range(1, 6) 1..5 ni beradi (6 siz).

for i in range(1, 6): print(i, end=" ")
1 2 3 4 5

Hayotda

for sikli amaliyotda

Oʻquv misol emas: avtomatizatsiya sikl orqali deploydan keyin xizmat ishlayotganini tekshiradi.

for-loop polling health endpoint

for i in 1 2 3 4 5; do ... done - shu konstruksiya monitoring, retry, migratsiya testlari va yuzlab boshqa narsalarga asos boʻladi.

2-dars, esda tutamiz

Roʻyxatlar va kesmalar

Tartiblangan kolleksiya. Indeksatsiya noldan. Kesmalar ikki nuqta orqali.

fruits = ["olma", "nok", "olxoʻri", "gilos"] print(fruits[0]) print(fruits[-1]) print(fruits[1:3])
olma gilos ['nok', 'olxoʻri']

2-dars, esda tutamiz

break va continue

continue: iteratsiyani oʻtkazib yuborish. break: sikldan chiqish.

for x in range(10): if x == 3: continue if x == 7: break print(x, end=" ")
0 1 2 4 5 6

Bugun

Funksiyalar (functions) va kolleksiyalar (collections)

tuple
set
dict
def · return
*args · **kwargs
scope · lambda

Bu nima?

Kortejlar (tuple)

Yaratilgandan keyin oʻzgarmaydigan tartiblangan kolleksiya. Qatʼiy toʻplamlar uchun: koordinatalar (x, y), RGB rang, sana (yil, oy, kun). Funksiya bir nechta qiymat qaytarsa, Python ularni kortej qilib qaytaradi.

0"Moskva"
1"Toshkent"
2"Bishkek"
capitals = ("Moskva", "Toshkent", "Bishkek") point = (10, 20) single = (42,) # vergul majburiy!

Nima uchun?

Tuple vs list

List bor ekan, nega tuple kerak? Oʻzgarmaslik - bu kamchilik emas, bu himoya.

List · []

Oʻzgaruvchan

  • • element qoʻshish va olib tashlash
  • • kengayadigan maʼlumotlar uchun
  • • biroz sekin
Tuple · ()

Oʻzgarmas

  • • tasodifan oʻzgartirilmaydi
  • • dict kaliti, set elementi
  • • tezroq, yengilroq
Tanlash qoidasi

Toʻplam qatʼiy boʻlsa (koordinatalar, RGB, sana) → tuple. Oʻzgaruvchan boʻlsa → list.

1-misol

Indeks boʻyicha murojaat

Natijani bashorat qiling. → tugmasini bosing javob uchun.

capitals = ("Moskva", "Toshkent", "Bishkek") print(capitals[0])
Moskva

Indeks noldan boshlanadi, listdagi kabi. capitals[-1] - oxirgi element.

2-misol

Kortej uzunligi

Natijani bashorat qiling. → tugmasini bosing javob uchun.

capitals = ("Moskva", "Toshkent", "Bishkek") print(len(capitals))
3

len() har qanday kolleksiya bilan ishlaydi: tuple, list, set, dict, str.

3-misol

Oʻzgartirishga urinish

Elementni qayta yozsak nima boʻladi? → tugmasini bosing javob uchun.

capitals = ("Moskva", "Toshkent", "Bishkek") capitals[0] = "X"
TypeError: 'tuple' object does not support item assignment

Bu feature, bug emas: tuple ni tasodifan buzib boʻlmaydi. Yangi qiymat kerak boʻlsa - yangi tuple yarating.

Bu nima?

Toʻplamlar (set)

Matematikadan struktura: noyob elementlar tartibsiz toʻplami. Python dublikatlarni avtomatik olib tashlaydi. Asosiy quvvati - x in set tekshiruvi O(1) tezligida, hatto millionlab elementda ham bir lahzada.

Set visualization
tags = {"python", "sql", "python", "git"} empty = set() # diqqat: {} - bu dict!

Motivatsiya

Toʻplamlar nima uchun kerak

Tez qidirish · dedupliksiya · toʻplam algebra

01

Dedupliksiya

Takrorlarni bir qatorda olib tashlash: list(set(items)).

02

Tez qidirish

x in set - O(1), roʻyxatda O(n).

03

Toʻplam algebra

Kesishma, birlashma, ayirma - bitta qator, siklsiz.

# real: A/B-test - kim eski va yangi versiyani ham koʻrgan? test_a = set(users_in_old_flow) # 50 000 ID test_b = set(users_in_new_flow) # 50 000 ID overlap = test_a & test_b # kesishma only_in_b = test_b - test_a # sof yangi print(f"Ikkalasini koʻrgan: {len(overlap)}") print(f"Faqat yangi: {len(only_in_b)}")
Ikkalasini koʻrgan: 1247 Faqat yangi: 48753

1-misol

Avtomatik dedupliksiya

Python takror "python" bilan nima qiladi? → tugmasini bosing javob uchun.

tags = {"python", "sql", "python", "git"} print(tags)
{'python', 'sql', 'git'}

Ikkinchi "python" yoʻq - set jim-jit dublikatni olib tashladi. Tartib kafolatlanmagan.

2-misol

Dedupliksiyadan keyingi uzunlik

4 ta element yozdik - nechta qoladi? → tugmasini bosing javob uchun.

tags = {"python", "sql", "python", "git"} print(len(tags))
3

4 emas, 3 - set faqat noyoblarni sanaydi. «Roʻyxatda nechta turli qiymat bor» degan savolga tez javob.

3-misol

Aʼzolikni tekshirish

x in set nimani qaytaradi? → tugmasini bosing javob uchun.

tags = {"python", "sql", "git"} print("python" in tags) print("java" in tags)
True False

Set ichidagi qidiruv - O(1). Roʻyxatda esa O(n) - million elementda farq juda katta.

Amallar

Toʻplamlar ustida amallar

Amal Maʼnosi Misol
a | b Birlashma {1,2,3} | {3,4} → {1,2,3,4}
a & b Kesishma {1,2,3} & {2,3,4} → {2,3}
a - b Ayirma {1,2,3} - {2,3} → {1}
a ^ b Simmetrik ayirma {1,2,3} ^ {2,3,4} → {1,4}
Foydali maslahat

Roʻyxatdan dublikatlarni oʻchirish: list(set(items)) - tartib yoʻqoladi.

Bu nima?

Lugʻatlar (dict)

Kalit (ism, ID, sana) bilan qiymat (har qanday obyekt) oʻrtasidagi bogʻlanish. Kalit boʻyicha murojaat - O(1) tezlikda. Bu Pythonning asosiy kolleksiyasi: JSON javoblar, konfiglar, keshlar, funksiya parametrlari - hammasi ichida dict.

kalitqiymat
"name"
"Alisa"
"age"
30
"city"
"Toshkent"
user = {"name": "Alisa", "age": 30, "city": "Toshkent"}

Motivatsiya

Lugʻatlar nima uchun kerak

Dict - Pythonning asosiy kolleksiyasi. JSON, konfiglar, API, keshlar - ichida hammasi dict.

01

Nom boʻyicha

Telefon kitobi: ism → raqam. Murojaat O(1), saralash emas.

02

JSON ↔ dict

API javoblari, konfiglar, saqlash - JSON obertkasida dict.

03

if-elif oʻrnida

10 if-elif shoxi → bitta d[key].

# real: API javobini parsing qilish response = requests.get("https://api.bank.uz/user/42").json() # response - allaqachon dict name = response["full_name"] # majburiy maydon email = response.get("email", "-") # boʻlmasligi mumkin balance = response.get("balance", 0) # default 0 print(f"{name}: {balance} soʻm")
Alisha Karimova: 1250000 soʻm

1-misol

Kalit boʻyicha murojaat

Natijani bashorat qiling. → tugmasini bosing javob uchun.

user = {"name": "Alisa", "age": 30} print(user["name"])
Alisa

Kvadrat qavslarda kalit, list kabi - lekin nomli: d["name"].

2-misol

Lugʻatda nechta juftlik

Natijani bashorat qiling. → tugmasini bosing javob uchun.

user = {"name": "Alisa", "age": 30, "city": "Toshkent"} print(len(user))
3

len(d) - juftliklar soni (kalit, qiymat). Kalitlar yoki qiymatlarning emas - bu bir xil son.

3-misol

Kalit borligini tekshirish

in nimani tekshiradi - kalitni yoki qiymatni? → tugmasini bosing javob uchun.

user = {"name": "Alisa", "age": 30} print("age" in user) print("Alisa" in user)
True False

Faqat kalitlar! "Alisa" - qiymat, uni in user.values() orqali qidirish kerak.

Murojaat

Kalit boʻyicha oʻqish

user = {"name": "Alisa", "age": 30}

Ifoda ustiga bosing - natijani koʻring:

// istalgan ifoda ustiga bosing
Diqqat

d[k] mavjud boʻlmagan kalitga KeyError beradi. .get() esa None yoki standart qiymatni qaytaradi.

Aylantirish

Lugʻatni aylantirish

scores = {"Anya": 85, "Bobur": 72, "Vika": 91} for k in scores: print(k) # faqat kalitlar for v in scores.values(): print(v) # faqat qiymatlar for k, v in scores.items(): print(f"{k}: {v}")
Anya: 85 Bobur: 72 Vika: 91

Savol

Qaysi kolleksiya mos keladi?

«Shahar → aholi» juftliklarini tez izlash bilan saqlash

Alist - tartiblangan roʻyxat
Btuple - oʻzgarmas
Cset - noyob elementlar
Ddict - kalit-qiymat

Bir daqiqa oʻylab koʻring →

Javob

D - lugʻat (dict)

«Shahar → aholi» - aynan lugʻat uchun yaratilgan stsenariy.

cities = { "Toshkent": 2_900_000, "Samarqand": 530_000, "Buxoro": 280_000, } print(cities["Toshkent"]) # O(1) - lahzada
2900000

list yozuvni O(n) da topgan boʻlardi. set faqat qiymatlarni, bogʻliqliksiz saqlaydi. tuple - oʻzgarmas. dict - haqiqatan ham key → value uchun yaratilgan yagona tur.

Shpargalka

Kolleksiyalar - qachon nima

Tur Oʻzgaruvchan Tartiblangan Dublikatlar Asosiy stsenariy
list [] ha ha ha kengayuvchi ketma-ketlik
tuple () yoʻq ha ha qatʼiy toʻplam
set {} ha yoʻq yoʻq noyob + tez qidirish
dict {k:v} ha ha (3.7+) kalitlar noyob nom/kalit boʻyicha qidirish
Qisqa qoida

«Nom boʻyicha qidirish?» → dict. «Noyob qiymatlar, tez in?» → set. «Oʻzgaradi?» → list. «Oʻzgarmaydi?» → tuple.

Yarmidamiz

Tanaffus

5–10 daqiqa

☕ Qahva, dam olish, savollar - funksiyalar bilan yana koʻrishamiz

Motivatsiya

Funksiyalar nima uchun kerak

Funksiyasiz 10 000 qatorli kod doʻzaxga aylanadi. Funksiya - nomlangan kod bloki oʻz dunyosi bilan.

01

Takror (DRY)

Logikani bir marta yozdik - ming marta ishlatamiz. Bir joyda tuzatdik - hamma joyda.

02

Nom

Oʻz-oʻzini hujjatlaydi: calc_tax(...) 5 qatorli formuladan tushunarli.

03

Izolyatsiya

Oʻz scope. Lokal nomlar tashqariga oqib chiqmaydi. Tashqaridan buzib boʻlmaydi.

# real misol: chegirma bilan narx hisoblash, # savatcha, invoys, hisobot, checkout - hammasida ishlatiladi def final_price(price, discount=0, tax=0.12): return (price * (1 - discount)) * (1 + tax) cart_total = final_price(100, discount=0.10) invoice_sum = final_price(250) vip_offer = final_price(500, discount=0.25)
cart = 100.80 invoice = 280.00 vip = 420.00

Funksiyasiz vs funksiya bilan

50 ta nusxa oʻrniga bitta qoida

Chapda - dublikatsiya doʻzaxi. Oʻngda - qayta ishlatiladigan kod.

funksiyasiz

Har buyurtma - copy/paste

# Buyurtma 1 p1 = 100 * 1.1 + 50 print(f"Buyurtma 1: {p1}") # Buyurtma 2 p2 = 250 * 1.1 + 50 print(f"Buyurtma 2: {p2}") # Buyurtma 3 p3 = 80 * 1.1 + 50 print(f"Buyurtma 3: {p3}") # ... yana 47 ta buyurtma
funksiya bilan

Bir marta yozdi, 50 marta chaqirdi

def order_total(price): return price * 1.1 + 50 orders = [100, 250, 80, 500, 30] for i, p in enumerate(orders, 1): print(f"Buyurtma {i}: {order_total(p)}")
Qoida oʻzgarsa

Soliq oʻzgardi? Chap kodda - 50 ta tuzatish, birortasini unutish oson. Oʻng kodda - bir qator.

Sintaksis

Sintaksis: def

Funksiyani eʼlon qilish - uni qanday chaqirishni tasvirlash

def greet(name): """Foydalanuvchini salomlaydi.""" message = f"Salom, {name}!" return message # Chaqiriq print(greet("Alisa")) # Salom, Alisa!
"Alisa"
greet()
"Salom, Alisa!"

Bosqichma-bosqich

Chaqiruv qanday ishlaydi

«Ishga tushirish»ni bosing - har bir qadam navbatma-navbat paydo boʻladi

def square(n): result = n * n return result x = square(4)
Qadam Amal Qiymat
1square(4) chaqiriladin = 4
2n * n16
3result = 16result = 16
4return result→ 16
5x = 16x = 16

return

Qiymat qaytarish

def divmod_safe(a, b): if b == 0: return None return a // b, a % b q, r = divmod_safe(17, 5) print(q, r)
3 2
Eslab qoling

return funksiyani yakunlaydi. Bir nechta qiymat tuple sifatida qaytariladi va alohida oʻzgaruvchilarga ajratiladi.

Ixtiyoriy

Standart parametrlar

Ism va salomni kiriting - maydon boʻsh boʻlsa, standart qiymat ishlaydi

def greet(name, greeting="Salom"): return f"{greeting}, {name}!"
Salom, Anya!

Standart qiymatli parametrlar funksiya sinaturasida oddiylaridan keyin keladi.

Tuzoq #1

Oʻzgaruvchan standart qiymatlar

Default bir marta hisoblanadi - funksiya eʼlon qilinganda, har chaqiruvda emas

xavfli

Bitta roʻyxat barchasiga

def add(item, cart=[]): cart.append(item) return cart print(add("olma")) # ["olma"] print(add("nok")) # ["olma", "nok"] ⚠
toʻgʻri

Har safar yangi roʻyxat

def add(item, cart=None): if cart is None: cart = [] cart.append(item) return cart
Analogiya

«Oʻqituvchining bitta umumiy daftari» vs «har bir oʻquvchiga yangi varaq». Hech qachon [], {}, set() ni default sifatida ishlatmang.

Pozitsion

*args - pozitsion argumentlar

Slayder bilan oʻynang - argumentlar tuple ichiga joylanishini koʻring

argumentlar: 3
chaqiriq
123
↓ args
(1, 2, 3)
def total(*args): return sum(args) print(total(1, 2, 3))
6

Nomli

**kwargs - nomli argumentlar

Maydonlar qoʻshib koʻring - kwargs ularni dict ichiga oladi

maydonlar: 3
chaqiriq
name="Anya" age=30 city="Toshkent"
↓ kwargs
{"name": "Anya", "age": 30, "city": "Toshkent"}
def profile(**kwargs): for k, v in kwargs.items(): print(f"{k}: {v}") profile(name="Anya", age=30, city="Toshkent")
name: Anya age: 30 city: Toshkent

Parametrlar tartibi

Har qiymat qayerga tushadi?

Qatʼiy tartib: oddiy → defaults → *args → keyword-only → **kwargs

def f(a, b=10, *args, status="active", **kwargs): print(a, b, args, status, kwargs) f(1, 2, 3, 4, status="pending", user="John")
a = 1 b = 2 # default ni almashtirdi args = (3, 4) status = "pending" kwargs = {"user": "John"}
Nozik nuqta

*args dan keyingi barcha argumentlar - keyword-only. status ni faqat nom bilan berish mumkin - aks holda qiymat args ga tushardi.

Chaqiruvda ochish

f(*lst, **dct) - bir xil * va ** teskari ishlaydi: list va dict ni argumentlar sifatida ochish.

Cho‘kishdan oldin

Umuman scope nima uchun kerak?

10 000 qatorli loyihani tasavvur qiling. Agar barcha oʻzgaruvchilar global boʻlsa, doʻzax 10-qatordan boshlanardi.

scope siz

Nomlar xaosi

  • • Har funksiya hammasini biladi
  • i, temp, result ni ikki marta ishlatib boʻlmaydi
  • • Birida oʻzgartirdi - boshqasida buzdi
  • • Kim oʻzgartirayotganini bilib boʻlmaydi
scope bilan

Izolyatsiyalangan dunyolar

  • • Har funksiyaning oʻz namespace si
  • i ichida f()i ichida g()
  • • Lokal oʻzgarishlar lokal qoladi
  • • Qayta ishlatish va test qilish oson
Analogiya

Scope - bir tomonlama oynali deraza. Funksiya ichidan tashqi dunyo (global) koʻrinadi. Tashqaridan lokal oʻzgaruvchilarga kira olmaysiz.

Koʻrinish

Koʻrinish sohasi (scope)

Nom ustiga bosing - Python uni LEGB qoidasi boʻyicha qidiradi

x = 100 # global
def demo():
    y = 5 # local
    print(x, y) # global x koʻrinadi
demo() # 100 5
print(y) # sinab koʻring: NameError
Istalgan oʻzgaruvchi ustiga bosing - qidiruv yoʻlini koʻrasiz

Qoidalar

LEGB - qidirish tartibi

Python nomni shu ketma-ketlikda qidiradi

Daraja Qayerda
L · Local Joriy funksiya ichida
E · Enclosing Tashqi funksiya (agar ichma-ich boʻlsa)
G · Global Modul darajasida
B · Built-in Oʻrnatilgan: print, len, range...
Muhim

Funksiya ichida x = 5 deb yozsangiz, hatto global x boʻlsa ham, yangi local x yaratiladi.

Tashqi scope ga yozish

global va nonlocal

Oʻqish tashqi scope ni koʻradi. Yozish - faqat lokal. Tashqi oʻzgaruvchini yozish uchun kalit soʻzlar kerak.

global

global ga yozish

counter = 0 def inc(): global counter counter += 1 inc(); inc() print(counter) # 2
nonlocal

tashqi funksiyaga yozish

def outer(): x = 0 def inner(): nonlocal x x += 1 inner(); inner() return x print(outer()) # 2
global siz

UnboundLocalError chiqadi - Python funksiya tanasida oʻzlashtirishni koʻrishi bilan oʻzgaruvchini lokal deb hisoblaydi. global aniq aytadi «lokal yaratma, globalga yoz».

Qisqa

Lambda funksiyalar

Bir qatorli, nomsiz qisqa funksiya

def orqali

Bir necha qator

def double(x): return x * 2
lambda orqali

Bir qator

double = lambda x: x * 2 double(5) # 10

Sintaksis: lambda argumentlar: ifoda. Faqat bitta ifoda, return yozilmaydi.

Yaxshi did chegarasi

Lambda - qachon yomon

Lambda qisqa ifodalar uchun ideal. Logika murakkab boʻlsa - def yozing. Kod odamlar uchun yoziladi.

dahshatli

Uchli ternar operatorlar

group = lambda x: "Katta" if x >= 18 else ("Oʻsmir" if x >= 13 else "Bola")
o‘qiladi

Oddiy funksiya

def age_group(age): if age >= 18: return "Katta" if age >= 13: return "Oʻsmir" return "Bola"
Asosiy qoida

Lambda 50–60 belgidan uzun yoki shartli boʻlsa - def ga qayta yozing. Funksiya nomi = tekin hujjat.

Qoʻllash

lambda + sorted

Tugmani bosing - kartochkalar oʻrnini fizik almashtiradi

1Anya30
2Bobur25
3Vika28
4Gleb22
5Dima35
people # asl
[ ('Anya', 30), ('Bobur', 25), ('Vika', 28), ('Gleb', 22), ('Dima', 35), ]

Tuzoq #2

lambda da Late binding

Lambda oʻzgaruvchining nomini eslab qoladi, yaratilgan paytdagi qiymatini emas

funcs = [lambda: i for i in range(3)] for f in funcs: print(f())
2 2 2 ⚠ 0, 1, 2 emas!

Uchchala lambda chaqirilgan paytda sikl tugab boʻlgan va i = 2. Hammasi bir nomga qaraydi.

# yechim: joriy i ni default argument orqali «qotirish» funcs = [lambda i=i: i for i in range(3)] for f in funcs: print(f())
0 1 2

Savol

Kod nima chiqaradi?

def f(x, y=10): return x + y print(f(5)) print(f(5, 20)) print(f(y=3, x=7))
A15 / 25 / 10
B15 / 25 / 21
C5 / 25 / Error
D15 / 20 / 10

Bir daqiqa oʻylab koʻring →

1-amaliyot

Statistika kalkulyatori

15:00
  1. 1 stats(*nums) funksiyasini yozing
  2. 2 Lugʻat qaytaring: min, max, avg, count
  3. 3 Argumentsiz boʻlsa - None qaytaring
  4. 4 Tekshiring: stats(1, 2, 3, 4, 5)

Yechim

1-yechim tahlili

def stats(*nums): if not nums: return None return { "min": min(nums), "max": max(nums), "avg": sum(nums) / len(nums), "count": len(nums), } print(stats(1, 2, 3, 4, 5)) # {"min": 1, "max": 5, "avg": 3.0, "count": 5}
*args tekshirish dict-return

2-amaliyot

Top-3 talaba

15:00
scores = {"Anya": 85, "Bobur": 72, "Vika": 91, "Gleb": 68, "Dima": 88}
  1. 1 top_n(scores, n=3) funksiyasini yozing
  2. 2 sorted + lambda qiymat boʻyicha
  3. 3 n ta eng yaxshi (ism, ball) juftliklarini qaytaring

Maslahat: scores.items() → juftliklar; teskari tartib uchun reverse=True.

Yechim

2-yechim tahlili

def top_n(scores, n=3): pairs = sorted( scores.items(), key=lambda p: p[1], reverse=True, ) return pairs[:n] scores = {"Anya": 85, "Bobur": 72, "Vika": 91, "Gleb": 68, "Dima": 88} print(top_n(scores)) # [("Vika", 91), ("Dima", 88), ("Anya", 85)]
items() sorted + lambda [:n]

Oʻzingiz oʻynab koʻring

Brauzerda jonli Python

Kodni oʻzgartiring va «Ishga tushirish»ni bosing - bu Pyodide orqali ishlaydigan haqiqiy Python

Pyodide hali yuklanmagan - «Ishga tushirish»ni bosing
// Natija shu yerda paydo boʻladi

Amaliy topshiriqlar

Jupyter Notebook

Dars mavzulari boʻyicha 10 ta topshiriq. Jupyter yoki VS Code orqali oching va mustaqil bajaring.

.ipynb
lesson3_tasks.ipynb
10 ta amaliy topshiriq
Yuklab olish UZ Скачать RU Download EN

Yakun

Dars yakunlari

  • Tuple, set, dict
  • def, return, parametrlar
  • Mutable defaults tuzogʻi
  • *args va **kwargs
  • LEGB · global · nonlocal
  • lambda va sorted/map/filter
  • lambda da late binding
  • Ochish f(*lst, **dct)
Keyingi dars

Modullar, fayllar va xatoliklar - maʼlumot oʻqish/yozish va try/except

Savollar?

Telegram: @gokalqurt

Python · 3-dars
RU UZ EN
1 / 59