O'zgaruvchilar — nom qoidalari, dinamik tipizatsiya, type()

~12 daq · Python · Kirish va Asoslar

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 emas
  • type(x) — o'zgaruvchi turini ko'rsatadi
  • Python katta-kichik harfga sezgir: Ism ≠ ism
  • list, print, input kabi o'rnatilgan nomlarni o'zgaruvchi sifatida ishlatmang

Keyingi dars

3-dars: Ma'lumot turlari — int, float, str, bool, None va tur o'zgartirish