O'zgaruvchilar — nom qoidalari, dinamik tipizatsiya, type()
Muammodan boshlaylik
Tasavvur qiling: siz do'konda kassir bo'lib ishlaysiz. Mijoz narxni so'raydi — siz kalkulyatorda hisoblaysiz. Keyin yana bir narsa qo'shiladi — yana hisoblaysiz. Lekin avvalgi natija qayerda? Yo'q bo'ldi — har safar qaytadan boshlaysiz.
Dasturlashda ham xuddi shu muammo bor. Hisoblangan narsani qayerdadir saqlash kerak — keyinroq ishlatish uchun. Bu joy — o'zgaruvchi.
O'zgaruvchi nima?
O'zgaruvchi — ma'lumotga berilgan nom. Xotiraning bir bo'lagiga yorliq yopishtirish.
Hayotiy o'xshatma: ombordagi qutichalar. Har bir qutichada narsa bor, ustida esa yorliq. "Narx" degan yorliqdagi qutichani ochsangiz — 45000 chiqadi. "Mijoz ismi" degan qutichada — "Jasur" bor. O'zgaruvchi aynan shunday: nom → qiymat.
narx = 45000
mijoz_ismi = "Jasur"
= — bu matematikadagi tenglik emas. Bu "berish" amali. "narx ga 45000 ni ber" degan ma'noni anglatadi.
Nom qoidalari
Python da o'zgaruvchi nomiga qoidalar bor. Ularni bilmasdan xato qilasiz.
Ruxsat etiladi:
- Harflar va raqamlar — lekin raqam bilan boshlanmaydi
- Past chiziq
_
Ruxsat etilmaydi:
- Bo'sh joy
- Maxsus belgilar:
!,@,-,. - Python kalit so'zlari:
if,for,class,return
# ✅ To'g'ri nomlar
ism = "Ali"
yoshim = 25
mahsulot_narxi = 45000
_vaqtinchalik = 0
narx2024 = 150000
# ❌ Xato nomlar
1narx = 100 # SyntaxError — raqam bilan boshlash
mening ism = "X" # SyntaxError — bo'sh joy
for = 5 # SyntaxError — kalit so'z
Uslub qoidasi: Python da snake_case ishlatiladi — so'zlar past chiziq bilan ajratiladi:
# ✅ Python uslubi
foydalanuvchi_ismi = "Malika"
mahsulot_narxi = 45000
# ❌ Boshqa tillar uslubi — Python da noto'g'ri odatlanish
foydalanuchiIsmi = "Malika" # JavaScript uslubi
Nima uchun shunday?
Nima uchun snake_case, camelCase emas?
Bu kelishuv (konventsiya) — Python jamoasi hamkorligida yozilgan PEP 8 standartida belgilangan. Barcha Python dasturchilar bir uslubda yozsalar — boshqaning kodini o'qish osonlashadi. Aslida kompyuterga farqi yo'q. Lekin inson uchun muhim.
Dinamik tipizatsiya
Python da o'zgaruvchi turini oldindan yozish shart emas. Python o'zi aniqlaydi.
x = 10 # Python: "bu butun son"
x = "salom" # Python: "endi bu matn"
x = 3.14 # Python: "endi bu kasr son"
Bu — dinamik tipizatsiya. Bir xil nom bilan turli turdagi qiymatlarni saqlash mumkin.
Statik tizimli tillarda (Java, C++) siz turni oldindan yozasiz:
// Java — tur oldindan yoziladi
int yosh = 25;
String ism = "Ali";
Python da bunday emas — erkinroq, lekin ehtiyot bo'lish kerak.
type() — turni aniqlash
type() funksiyasi o'zgaruvchi turini ko'rsatadi:
ism = "Jasur"
yosh = 25
narx = 19.99
aktiv = True
print(type(ism)) # <class 'str'>
print(type(yosh)) # <class 'int'>
print(type(narx)) # <class 'float'>
print(type(aktiv)) # <class 'bool'>
Hozircha <class '...'> formatini bilish yetarli — bu Python ning tur tizimi. Turlar haqida keyingi darsda batafsil.
Qiymat berish va yangilash
son = 10
print(son) # 10
son = 20 # ← yangi qiymat, eski o'chadi
print(son) # 20
son = son + 5 # ← hozirgi qiymatga 5 qo'sh, natijani qaytadan saqlа
print(son) # 25
Qisqaroq yozish usullari:
son += 5 # son = son + 5
son -= 3 # son = son - 3
son *= 2 # son = son * 2
son //= 4 # son = son // 4
Bir qatorda bir nechta o'zgaruvchi:
a, b, c = 1, 2, 3
# Ikki o'zgaruvchini almashtirish — Python da juda oson:
a, b = b, a
Boshqa tillarda buning uchun vaqtinchalik o'zgaruvchi kerak. Python da — bir qator.
Tez-tez uchraydigan xatolar
O'zgaruvchini e'lon qilmay ishlatish:
print(ism) # NameError: name 'ism' is not defined
ism = "Ali"
Python qatorma-qator o'qiydi. Ishlatilgunga qadar e'lon qilinmagan bo'lsa — xato.
Katta-kichik harf farqi:
Ism = "Ali"
print(ism) # NameError — "Ism" va "ism" turli o'zgaruvchilar
Python harfga sezgir. Ism, ism, ISM — uchta turli o'zgaruvchi.
O'rnatilgan nomlarni ishlatish:
list = [1, 2, 3] # ❌ — "list" Python ning o'rnatilgan funksiyasi edi
# shu nom bilan uni ustini yopdingiz
list([4, 5]) # TypeError — endi list() funksiyasi ishlamaydi
Bu xato topish qiyin — chunki hech qanday SyntaxError bermaydi.
Xulosa
O'zgaruvchi — ma'lumotga berilgan nom. Python da tur oldindan e'lon qilinmaydi.
Eslab qoling:
snake_case— Python uslubi=— berish amali, matematikadagi tenglik emastype(x)— o'zgaruvchi turini ko'rsatadi- Python katta-kichik harfga sezgir:
Ism ≠ ism list,print,inputkabi o'rnatilgan nomlarni o'zgaruvchi sifatida ishlatmang
Keyingi dars
3-dars: Ma'lumot turlari — int, float, str, bool, None va tur o'zgartirish