Mundarija (24)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. REPL nima va u qanday ishlaydi
- 2.2. Ifoda va buyruq — REPL nimani ko'rsatadi
- 2.3. _ — oxirgi natija
- 2.4. Ko'p qatorli kod
- 2.5. help() — o'rnatilgan qo'llanma
- 2.6. dir() — obyekt nimalar qila oladi
- 2.7. type() — bu nima
- 2.8. REPL'dan chiqish va tarix
- 2.9. python -i — faylni ishga tushirib, REPL'da qolish
- 2.10. Yaxshiroq REPL: IPython
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — REPL bilan tanishuv
- Misol 2 — _ bilan hisob-kitob
- Misol 3 — dir() va help() bilan kashfiyot
- Misol 4 — Ko'p qatorli kod va python -i
- 5. To'g'ri va noto'g'ri tushunishlar
- 6. Keng tarqalgan xatolar va yechimlari
- 7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 8. Eng yaxshi amaliyotlar
- 9. Amaliy topshiriq
- Xulosa
2.5-dars: REPL — interaktiv rejim
2-QISM — MUHIT VA VOSITALAR · 5-dars
1. Kirish va motivatsiya
Shu paytgacha biz kodni faylga yozib, keyin ishga tushirdik. Bu — normal ish usuli, lekin o'rganish uchun sekin.
Tasavvur qiling: len("salom") nima qaytarishini bilmoqchisiz. Fayl yaratish, yozish, saqlash, terminalga o'tish, ishga tushirish — beshta qadam. Bitta savolga.
REPL buni bir qadamga qisqartiradi:
>>> len("salom")
5REPL — Read (o'qi), Eval (hisobla), Print (chiqar), Loop (takrorla). Siz yozasiz, u darhol javob beradi. Cheksiz.
Bu — Pythonning eng kuchli o'rganish vositasi. Tajribali dasturchilar ham uni har kuni ishlatadi:
- yangi kutubxonani sinash
- funksiya nima qaytarishini tekshirish
- kichik hisob-kitob
- xato sababini topish
Bu darsda REPL'ni to'liq o'zlashtiramiz: sirli _ o'zgaruvchisidan tortib, help() va dir() gacha. Va nihoyat — birinchi haqiqiy kodingizni yozasiz.
2. Nazariya — chuqur tushuntirish
2.1. REPL nima va u qanday ishlaydi
REPL — bu Pythonning interaktiv rejimi. Faylsiz ishlaydi.
Ishga tushirish:
Windows: py
macOS / Linux: python3Ko'rasiz:
Python 3.12.7 (main, Oct 1 2026, 11:22:33) [Clang 15.0.0] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>>>> — taklif belgisi (prompt). U "kod kutyapman" degani.
Ichkarida nima bo'ladi? 1.8-darsdagi zanjirning qisqartirilgan varianti:
Siz qator yozasiz
↓
Python uni TAHLIL qiladi (parsing)
↓
BYTECODE ga o'giradi
↓
PVM BAJARADI
↓
Natija bo'lsa — CHIQARADI
↓
Yana >>> ko'rsatadiFarqi: fayl bilan ishlaganda butun fayl bir marta kompilyatsiya qilinadi. REPL'da har qator alohida.
2.2. Ifoda va buyruq — REPL nimani ko'rsatadi
Bu — REPL'ning eng chalkashtiradigan jihati.
>>> 2 + 3
5
>>> x = 10
>>>Nega birinchisi javob berdi, ikkinchisi bermadi?
Ifoda (expression) — qiymatga ega. REPL uni hisoblab, natijasini ko'rsatadi:
>>> 2 + 3
5
>>> "salom"
'salom'
>>> len("salom")
5Buyruq (statement) — amal bajaradi, qiymat qaytarmaydi. REPL hech narsa ko'rsatmaydi:
>>> x = 10 # o'zlashtirish — buyruq
>>> import math # import — buyruqQiymatni ko'rish uchun nomni yozing:
>>> x
10Muhim farq — faylda bunday bo'lmaydi:
# main.py
2 + 3 # hisoblaydi, lekin HECH NARSA ko'rsatmaydi
print(2 + 3) # 5 — chiqadiFaylda natijani ko'rish uchun print majburiy. REPL'da esa avtomatik.
Bu farqni tushunmaslik boshlovchilarni ko'p adashtiradi: "REPL'da ishladi, faylda ishlamayapti."
2.3. _ — oxirgi natija
REPL'da maxsus o'zgaruvchi bor: pastki chiziq _. U oxirgi ifodaning natijasini saqlaydi.
>>> 10 * 5
50
>>> _
50
>>> _ + 25
75
>>> _ * 2
150Bu kalkulyator sifatida juda qulay:
>>> 1500 * 12
18000
>>> _ * 0.13 # 13% soliq
2340.0
>>> 18000 - _
15660.0Diqqat:
_faqat REPL'da mavjud. Faylda u oddiy o'zgaruvchi (odatda "kerak emas qiymat" ma'nosida ishlatiladi — 6-qismda ko'ramiz).
2.4. Ko'p qatorli kod
Sikl yoki shart yozsangiz, REPL taklif belgisini o'zgartiradi:
>>> for i in range(3):
... print(i)
...
0
1
2... — "davomini kutyapman" degani.
Uch qoida:
- Ikki nuqtadan (
:) keyin REPL avtomatik...ga o'tadi - Ichki qatorlarni chekintiring (4 bo'sh joy)
- Blokni tugatish uchun bo'sh qator kiriting (Enter)
>>> son = 7
>>> if son > 5:
... print("Katta")
... else:
... print("Kichik")
...
KattaBu — REPL'da eng ko'p xato keltiradigan joy. Bo'sh qatorni unutmang.
2.5. help() — o'rnatilgan qo'llanma
Python o'z hujjatlarini ichida olib yuradi.
>>> help(len)
Help on built-in function len in module builtins:
len(obj, /)
Return the number of items in a container.>>> help(str.upper)
Help on method_descriptor:
upper(self, /)
Return a copy of the string converted to uppercase.Interaktiv rejim:
>>> help()
Welcome to Python 3.12's help utility!
...
help> keywords # barcha kalit so'zlar
help> str # str turi haqida to'liq
help> quit # chiqishBu — internetdan qidirishdan tezroq. Va oflayn ishlaydi.
2.6. dir() — obyekt nimalar qila oladi
>>> dir(str)
['__add__', '__class__', ..., 'capitalize', 'casefold', 'center',
'count', 'encode', 'endswith', ..., 'upper', 'zfill']Ikki pastki chiziqli nomlar (__add__) — ichki metodlar (8-qismda o'rganamiz). Qolganlari — siz ishlatadigan metodlar.
Faqat foydalilarini ko'rish:
>>> [m for m in dir(str) if not m.startswith("_")]
['capitalize', 'casefold', 'center', 'count', 'encode', ...]O'zgaruvchi ustida ham ishlaydi:
>>> matn = "salom"
>>> dir(matn) # str bilan bir xil ro'yxathelp() + dir() birgalikda — kashfiyot vositasi:
>>> dir(matn) # nimalar bor?
>>> help(matn.center) # bu nima qiladi?2.7. type() — bu nima
>>> type(42)
<class 'int'>
>>> type(3.14)
<class 'float'>
>>> type("salom")
<class 'str'>
>>> type(True)
<class 'bool'>
>>> type([1, 2, 3])
<class 'list'>
>>> type(None)
<class 'NoneType'>1.3-darsda Pythonning dinamik turlashi haqida gapirgandik. type() — buni o'z ko'zingiz bilan ko'rish usuli.
>>> x = 10
>>> type(x)
<class 'int'>
>>> x = "endi satr"
>>> type(x)
<class 'str'>Bir xil o'zgaruvchi, turli tur. Bu — dinamik turlash.
2.8. REPL'dan chiqish va tarix
Chiqish:
>>> exit()
>>> quit()yoki tugmalar:
Ctrl + D macOS / Linux
Ctrl + Z, Enter WindowsTarix:
↑/↓— oldingi buyruqlarCtrl + R— tarixdan qidirish (Unix)- Tarix seanslar orasida saqlanadi (
~/.python_history)
Ekranni tozalash:
Ctrl + L # Unix
>>> import os; os.system("cls") # Windows2.9. python -i — faylni ishga tushirib, REPL'da qolish
Bu — kam ma'lum, lekin juda foydali imkoniyat.
python3 -i main.pyBu:
main.pyni to'liq bajaradi- Keyin REPL'ni ochadi — fayldagi barcha o'zgaruvchi va funksiya qo'lda
# main.py
ismlar = ["Ali", "Vali", "Guli"]
def salomlash(ism):
return f"Salom, {ism}!"python3 -i main.py>>> ismlar
['Ali', 'Vali', 'Guli']
>>> salomlash("Ali")
'Salom, Ali!'
>>> len(ismlar)
3Bu — nosozlik izlash uchun ajoyib usul. Dastur nima holatda tugaganini ko'rish mumkin.
2.10. Yaxshiroq REPL: IPython
Standart REPL sodda. IPython — uning kuchaytirilgan varianti.
python3 -m pip install ipython
ipythonNima beradi:
| Imkoniyat | Standart REPL | IPython |
|---|---|---|
| Rangli kod | yo'q | bor |
| Tab bilan to'ldirish | cheklangan | to'liq |
? bilan yordam |
yo'q | len? |
| Ko'p qatorli tahrirlash | qiyin | qulay |
| Sehrli buyruqlar | yo'q | %timeit, %run |
In [1]: len?
Signature: len(obj, /)
Docstring: Return the number of items in a container.
In [2]: %timeit sum(range(1000))
8.42 µs ± 132 ns per loopBoshlovchiga kerakmi? Hozir emas — standart REPL yetarli. Lekin bir necha haftadan keyin sinab ko'ring, orqaga qaytmaysiz.
3. Tez ma'lumotnoma
Kirish va chiqish
py / python3 ishga tushirish
exit() / quit() chiqish
Ctrl+D (Unix) chiqish
Ctrl+Z, Enter (Win) chiqishTaklif belgilari
>>> yangi buyruq kutilyapti
... davomi kutilyapti (bo'sh qator — tugatish)Maxsus
_ oxirgi natija
help(x) x haqida qo'llanma
dir(x) x ning metodlari
type(x) x ning turiFoydali
python3 -i fayl.py faylni bajarib, REPL'da qolish
python3 -c "kod" bitta buyruqni bajarishFarq
REPL'da: 2 + 3 → 5 chiqadi
Faylda: 2 + 3 → hech narsa
Faylda: print(2 + 3) → 5 chiqadi4. Batafsil misollar
Misol 1 — REPL bilan tanishuv
>>> 2 + 3
5
>>> 10 / 3
3.3333333333333335
>>> 10 // 3
3
>>> 10 % 3
1
>>> 2 ** 10
1024/— oddiy bo'lish, doimfloatqaytaradi//— butun bo'lish%— qoldiq**— daraja
E'tibor bering: 10 / 3 natijasi 3.3333333333333335 — oxirida 5. Bu xato emas, bu kompyuterda kasr sonlar qanday saqlanishining natijasi. 3.4-darsda buni batafsil o'rganamiz.
>>> "Salom" + ", dunyo!"
'Salom, dunyo!'
>>> "ha" * 3
'hahaha'
>>> len("Salom")
5Satrlarda + — ulash, * — takrorlash.
Nima ko'rsatdi: 2.2-bo'lim. Har bir ifoda darhol natija beradi.
Misol 2 — _ bilan hisob-kitob
Oylik maoshdan soliq hisoblash:
>>> 5_000_000
5000000Pythonda katta sonlarda
_ajratgich sifatida ishlatiladi — o'qish oson. Bu qiymatga ta'sir qilmaydi.
>>> 5_000_000 * 0.12 # 12% daromad solig'i
600000.0
>>> 5_000_000 - _ # qo'lga tegadigan summa
4400000.0
>>> _ / 12000 # dollarga (shartli kurs)
366.6666666666667
>>> round(_, 2)
366.67round(son, 2) — ikki xonagacha yaxlitlash.
Nima ko'rsatdi: 2.3-bo'lim. REPL — kuchli kalkulyator.
Misol 3 — dir() va help() bilan kashfiyot
Satr nimalar qila olishini bilmaymiz. Kashf qilamiz:
>>> matn = "salom dunyo"
>>> [m for m in dir(matn) if not m.startswith("_")][:10]
['capitalize', 'casefold', 'center', 'count', 'encode',
'endswith', 'expandtabs', 'find', 'format', 'format_map']title degan metod bormi?
>>> "title" in dir(matn)
True
>>> help(matn.title)
Help on built-in function title:
title() method of builtins.str instance
Return a version of the string where each word is titlecased.Sinab ko'ramiz:
>>> matn.title()
'Salom Dunyo'
>>> matn.upper()
'SALOM DUNYO'
>>> matn.replace("dunyo", "olam")
'salom olam'
>>> matn.split()
['salom', 'dunyo']Muhim: asl matn o'zgarmadi:
>>> matn
'salom dunyo'Satrlar o'zgarmas (immutable). Metodlar yangi satr qaytaradi. Bu — 4-qismning asosiy mavzularidan biri.
Nima ko'rsatdi: 2.5 va 2.6-bo'limlar. Internetsiz o'rganish usuli.
Misol 4 — Ko'p qatorli kod va python -i
REPL'da sikl:
>>> ismlar = ["Ali", "Vali", "Guli"]
>>> for ism in ismlar:
... print(f"Salom, {ism}!")
...
Salom, Ali!
Salom, Vali!
Salom, Guli!f"..." — f-satr. Ichidagi {ism} o'zgaruvchi qiymatiga almashadi. 3.13-darsda batafsil.
Endi -i bayrog'i. hisob.py faylini yarating:
narxlar = [12000, 45000, 8000, 23000]
def jami(ro_yxat):
return sum(ro_yxat)
def ortacha(ro_yxat):
return sum(ro_yxat) / len(ro_yxat)
print("Fayl bajarildi. Jami:", jami(narxlar))python3 -i hisob.pyFayl bajarildi. Jami: 88000
>>> narxlar
[12000, 45000, 8000, 23000]
>>> ortacha(narxlar)
22000.0
>>> max(narxlar)
45000
>>> min(narxlar)
8000
>>> sorted(narxlar)
[8000, 12000, 23000, 45000]
>>> narxlar.append(30000)
>>> jami(narxlar)
118000Fayl bajarilgach, uning butun holati REPL'da qo'lingizda qoldi.
Nima ko'rsatdi: 2.4 va 2.9-bo'limlar. Bu — nosozlik izlashning eng qulay usullaridan biri.
5. To'g'ri va noto'g'ri tushunishlar
| Noto'g'ri fikr | To'g'risi |
|---|---|
| "REPL — o'yinchoq, jiddiy emas" | Tajribali dasturchilar uni har kuni ishlatadi |
| "REPL'da ishlagan kod faylda ham ishlaydi" | Odatda ha, lekin print masalasi bor (2.2-bo'lim) |
"REPL'da print shart emas" |
Ifoda uchun — shart emas. Sikl ichida — shart |
"_ — oddiy o'zgaruvchi" |
REPL'da u maxsus: oxirgi natijani saqlaydi |
| "REPL'dagi o'zgaruvchilar saqlanadi" | Yo'q — chiqqanda hammasi yo'qoladi |
| "Yordam uchun internetga kirish kerak" | help() va dir() oflayn ishlaydi va tezroq |
| "Ko'p qatorli kod REPL'da ishlamaydi" | Ishlaydi. Faqat oxirida bo'sh qator kerak |
6. Keng tarqalgan xatolar va yechimlari
1. IndentationError: expected an indented block
>>> for i in range(3):
... print(i)
File "<stdin>", line 2
print(i)
^
IndentationError: expected an indented blockSabab: ikki nuqtadan keyingi qator chekintirilmagan.
Yechim: ... dan keyin 4 bo'sh joy qo'ying.
2. Blok tugamayapti, ... qolib ketdi
Sabab: bo'sh qator kiritilmagan.
Yechim: Enter bosing (bo'sh qator). Yoki Ctrl+C bilan bekor qiling.
3. SyntaxError: unexpected EOF while parsing
Sabab: qavs yopilmagan.
>>> print("salom"
... Yechim: qavsni yoping yoki Ctrl+C bilan bekor qilib, qaytadan yozing.
4. REPL'da ishladi, faylda hech narsa chiqmaydi
Sabab: 2.2-bo'lim. Faylda print kerak.
2 + 3 # hech narsa
print(2 + 3) # 55. Uzun kodni REPL'ga nusxaladim, xato chiqdi
Sabab: standart REPL ko'p qatorli nusxalashni yaxshi qabul qilmaydi (bo'sh qatorlar blokni tugatadi).
Yechim: faylga yozing va python3 -i fayl.py qiling. Yoki IPython ishlating.
6. O'zgaruvchilar yo'qoldi
Sabab: REPL'dan chiqdingiz.
Yechim: normal holat. Saqlash kerak bo'lsa — faylga yozing.
7. Windows'da exit yozdim, chiqmadi
Sabab: exit — obyekt, exit() — chaqiruv.
>>> exit
Use exit() or Ctrl-Z plus Return to exit
>>> exit()7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 3-qism: har bir yangi tur va operatorni REPL'da sinash
- 4-qism: satr metodlarini
dir()bilan kashf qilish - 7-qism: funksiyalarni tez sinash
- 9-qism: xatolarni REPL'da qayta hosil qilish
- 18-qism: yangi kutubxonani o'rnatgach, birinchi ish — REPL'da sinash
- 15-qism: standart kutubxonani
help()bilan o'rganish - Har kuni: "bu funksiya nima qaytaradi?" degan savolga eng tez javob
8. Eng yaxshi amaliyotlar
REPL'ni doim ochiq tuting. Ikkinchi terminal oynasida. Savol tug'ilganda — darhol sinang.
Yangi kutubxonani birinchi bo'lib REPL'da sinang. Hujjat o'qishdan oldin
dir()vahelp().help()ni internetdan oldin ishlating. Tezroq, aniqroq, oflayn.Uzun kodni REPL'da yozmang. 5 qatordan oshsa — faylga o'ting.
python -ini eslab qoling. Dastur nima holatda tugaganini ko'rishning eng oson usuli.Bir necha haftadan keyin IPython'ga o'ting. Farqni darhol sezasiz.
REPL — sinov maydoni, ishlab chiqarish emas. Muhim kod faylda bo'lsin.
9. Amaliy topshiriq
Vazifa 1: Birinchi seans
REPL'ni oching va bajaring:
>>> 2 + 2
>>> "Salom" + " " + "dunyo"
>>> len("Python")
>>> 17 // 5
>>> 17 % 5
>>> 2 ** 8Har birining natijasini yozing. 17 // 5 va 17 % 5 nimani anglatadi?
Vazifa 2: _ bilan hisob
Kalkulyator sifatida ishlating. Do'kondan xarid:
Non: 4000 so'm × 2
Sut: 12000 so'm × 1
Guruch: 18000 so'm × 3- Jami summani
_yordamida hisoblang - 10% chegirma qo'llang
- Natijani
round()bilan yaxlitlang
Vazifa 3: Kashfiyot
>>> son = 42
>>> type(son)
>>> dir(son)Savollar:
sonqanday turga tegishli?bit_lengthdegan metod bormi?help()bilan nima qilishini bilingson.bit_length()nima qaytaradi? Nega?
Javoblar
<class 'int'>- Ha.
help(son.bit_length)— "Number of bits necessary to represent self in binary" 6. Chunki 42 ikkilikda101010— olti raqam. Bu 1.1-darsdagi ikkilik sanoq tizimi
Vazifa 4: Ko'p qatorli kod
REPL'da yozing:
>>> for i in range(1, 6):
... print(i, "ning kvadrati:", i * i)
...Keyin o'zgartiring: faqat juft sonlarni chiqarsin.
Javob
>>> for i in range(1, 11):
... if i % 2 == 0:
... print(i, "ning kvadrati:", i * i)
...Ikki darajali chekinish — if for ichida.
Vazifa 5: python -i bilan tajriba
4-misoldagi hisob.py ni yarating va -i bilan ishga tushiring. Keyin REPL'da:
- Ro'yxatga yangi narx qo'shing
- Yangi o'rtachani hisoblang
- Ro'yxatni kamayish tartibida saralang
Javob
>>> narxlar.append(50000)
>>> ortacha(narxlar)
>>> sorted(narxlar, reverse=True)Vazifa 6: Farqni ko'rish
sinov.py faylini yarating:
2 + 3
"salom"
len("Python")
print("Faqat bu ko'rinadi")Ishga tushiring. Nechta qator chiqdi va nega?
Javob
Faqat bitta: Faqat bu ko'rinadi.
Birinchi uch qator hisoblanadi, lekin faylda natija avtomatik chiqarilmaydi (2.2-bo'lim). REPL'da esa uchalasi ham javob berardi.
Bu farqni tushunish muhim: faylda print majburiy.
Nimani mustahkamlaydi: 2.2, 2.3, 2.4, 2.5, 2.6, 2.9-bo'limlar.
Xulosa
Bu darsda Pythonning interaktiv rejimini — REPL'ni o'rgandik.
Eng muhim uch fikr:
REPL — o'rganishning eng tez yo'li. Savol tug'ildi, yozdingiz, javob oldingiz. Fayl, saqlash, ishga tushirish yo'q.
Faylda
printmajburiy, REPL'da yo'q. Bu farqni tushunmaslik boshlovchilarni ko'p adashtiradi.help(),dir(),type()— kashfiyot uchligi. Ular bilan internetsiz, hujjatsiz, o'z terminalingizda o'rganasiz.
Keyingi darsda VS Code ni o'rnatamiz — professional kod muharriri. REPL tez savollar uchun, VS Code esa haqiqiy loyihalar uchun. Ikkalasi birgalikda sizning ish maydoningizni tashkil qiladi.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!