Hurmatli kanalimiz a'zolari biz jamoamiz bilan python dasturlash tilidagi o'zbekcha kontentlarni sekin asta ko'paytirishga o'z hissamizni qo'shmoqchimiz va o'rganuvchilarga oson va foydali bo'lishi uchun 3 ta kanal yaratganmiz. Va ular quyidagilar:
1) Umumiy kanal va bu kanalda faqat postlar va ular aralash holatda bo'ladi (boshlovchilar va tajribaga ega dasturchilar uchun):
https://t.me/simplypythonuz
2) Faqat boshlovchilar uchun yopiq kanal, bu kanalda boshlovchilar uchun postlar va batafsil tushuntirish uchun video darslar berib boriladi:
https://t.me/+4-HzPYPUWWw3NDEy
3)Tajribaga ega dasturchilar uchun yopiq kanal, va unda biroz murakkabroq mavzular, yangi imkoniyatlar, funksiyalar bo'yicha postlar va video darslar berib boriladi:
https://t.me/+G8Ao2nlAzBQ0ZGIy
Yana shuni aytish kerakki, ushbu umumiy kanalda qolgan ikkita kanaldagi postlar berib boriladi lekin video darslar berilmaydi!!!
Yaqinlarga ulashish esingizdan chiqmasin, biz boshladik😄
1) Umumiy kanal va bu kanalda faqat postlar va ular aralash holatda bo'ladi (boshlovchilar va tajribaga ega dasturchilar uchun):
https://t.me/simplypythonuz
2) Faqat boshlovchilar uchun yopiq kanal, bu kanalda boshlovchilar uchun postlar va batafsil tushuntirish uchun video darslar berib boriladi:
https://t.me/+4-HzPYPUWWw3NDEy
3)Tajribaga ega dasturchilar uchun yopiq kanal, va unda biroz murakkabroq mavzular, yangi imkoniyatlar, funksiyalar bo'yicha postlar va video darslar berib boriladi:
https://t.me/+G8Ao2nlAzBQ0ZGIy
Yana shuni aytish kerakki, ushbu umumiy kanalda qolgan ikkita kanaldagi postlar berib boriladi lekin video darslar berilmaydi!!!
Yaqinlarga ulashish esingizdan chiqmasin, biz boshladik😄
🔢 math.perm() metodi — Tartibli tanlovlar soni
Python'dagi math.perm() metodi — bu n elementdan tartib bilan va takrorlarsiz k element tanlashning nechta usuli mavjudligini hisoblab beradi.
📌 Sintaksis:
🟢 Bu yerda:
- n — tanlov qilinadigan umumiy elementlar soni
- k — tanlab olinadigan elementlar soni
- Natijada nPk ya’ni permutatsiya soni qaytariladi
🧪 Misollar:
📍 1-misolda: 5 ta elementdan 3 tasini tartibli tanlash — 60 xil usulda.
📍 2-misolda: 10 ta elementdan 5 tasini tartibli tanlash — 30240 xil usulda.
⚠️ Eslatma: math.perm() funksiyasi Python 3.8 va undan yuqori versiyalarda mavjud.
🧠 Permutatsiyalar — kombinatorika, ehtimollar nazariyasi va algoritmlarda keng qo‘llaniladi.
Python'dagi math.perm() metodi — bu n elementdan tartib bilan va takrorlarsiz k element tanlashning nechta usuli mavjudligini hisoblab beradi.
📌 Sintaksis:
math.perm(n, k)
🟢 Bu yerda:
- n — tanlov qilinadigan umumiy elementlar soni
- k — tanlab olinadigan elementlar soni
- Natijada nPk ya’ni permutatsiya soni qaytariladi
🧪 Misollar:
from math import perm
print(perm(5, 3)) # Natija: 60
print(perm(10, 5)) # Natija: 30240
📍 1-misolda: 5 ta elementdan 3 tasini tartibli tanlash — 60 xil usulda.
📍 2-misolda: 10 ta elementdan 5 tasini tartibli tanlash — 30240 xil usulda.
⚠️ Eslatma: math.perm() funksiyasi Python 3.8 va undan yuqori versiyalarda mavjud.
🧠 Permutatsiyalar — kombinatorika, ehtimollar nazariyasi va algoritmlarda keng qo‘llaniladi.
📌 Eng katta umumiy bo‘luvchi (GCD)
Python'ning standart matematik kutubxonasida oddiy matematik hisob-kitoblarni ancha yengillashtiradigan foydali metodlar mavjud. Ulardan biri — gcd() metodi bo‘lib, u berilgan ikki sonning eng katta umumiy bo‘luvchisini (EKUB) hisoblab beradi.
🧮 Misol:
Bu kod 36 va 60 sonlarining eng katta umumiy bo‘luvchisi — 12 ni chiqaradi.
📚 gcd() metodi Python'da math modulida joylashgan va Python 3.5 va undan keyingi versiyalarda mavjud.
🔢 EKUB hisoblash matematikada, algoritmlarda va kod optimallashtirishda keng qo‘llaniladi.
Python'ning standart matematik kutubxonasida oddiy matematik hisob-kitoblarni ancha yengillashtiradigan foydali metodlar mavjud. Ulardan biri — gcd() metodi bo‘lib, u berilgan ikki sonning eng katta umumiy bo‘luvchisini (EKUB) hisoblab beradi.
🧮 Misol:
from math import gcd
print(gcd(36, 60)) # Natija: 12
Bu kod 36 va 60 sonlarining eng katta umumiy bo‘luvchisi — 12 ni chiqaradi.
📚 gcd() metodi Python'da math modulida joylashgan va Python 3.5 va undan keyingi versiyalarda mavjud.
🔢 EKUB hisoblash matematikada, algoritmlarda va kod optimallashtirishda keng qo‘llaniladi.
Assalomu alaykum, kunni ozgina bilim yoki takrorlash bilan boshlashga nima deysiz?
Bugun sizlar bilan python funksiyalarda keng qo'llaniladigan *args hamda **kwargs argumentlar haqida gaplashamiz.
Aytaylik siz, soni cheklanmagan miqdordagi raqamlar qabul qiladigan va ularning ko'paytmasini qaytaradigan funksiya yaratmoqchisiz. Bu masalaning bitta yechimi list dan foydalanish, lekin sizda undan ko'ra chiroyliroq yechim qilishga imkon bor. Bu *args dir.
Ko'rib turganingizdek, ancha qulay.
Endi, **kwargs ga o'tsak, sizga argumentlarning faqat o'zgaruvchi qiymati emas, balki ularning nomi ham kerak bo'lsa **kwargs ni ishlatish ayni muddao.
Sezganingizdek, **user argumenti bizga dict hosil qilib berdi, funksiya ichkarisida undan xohlaganimizdek foydalansak bo'ladi.
Foydali bo'ldi degan umiddaman. Kuningiz xayrli o'tsin!
@simplypythonuz
Bugun sizlar bilan python funksiyalarda keng qo'llaniladigan *args hamda **kwargs argumentlar haqida gaplashamiz.
Aytaylik siz, soni cheklanmagan miqdordagi raqamlar qabul qiladigan va ularning ko'paytmasini qaytaradigan funksiya yaratmoqchisiz. Bu masalaning bitta yechimi list dan foydalanish, lekin sizda undan ko'ra chiroyliroq yechim qilishga imkon bor. Bu *args dir.
def multiply(*numbers):
total = 1
for number in numbers:
total *= number
return total
result = multiply(1, 5, 2, 13, 15)
Ko'rib turganingizdek, ancha qulay.
Endi, **kwargs ga o'tsak, sizga argumentlarning faqat o'zgaruvchi qiymati emas, balki ularning nomi ham kerak bo'lsa **kwargs ni ishlatish ayni muddao.
def save_user(**user):
for key, value in user.items():
print(f"{key}: {value}")
save_user(name="John", age=31)
Sezganingizdek, **user argumenti bizga dict hosil qilib berdi, funksiya ichkarisida undan xohlaganimizdek foydalansak bo'ladi.
Foydali bo'ldi degan umiddaman. Kuningiz xayrli o'tsin!
@simplypythonuz
🧠 Python masala: Unikal so‘zlar sonini hisoblash
Masala:
Foydalanuvchidan satr (matn) qabul qiladigan funksiya yozing va shu satrdagi unikal (takrorlanmas) so‘zlar sonini qaytaring.
Satrda so‘zlar bo‘sh joy bilan ajratilgan, tinish belgilari olib tashlanishi kerak.
📌 Tushuntirish:
Ushbu kodda
Keyin butun matnni kichik harflarga o'tkazib, bo‘sh joy bo‘yicha bo‘lib chiqamiz va
⚙️ Optimallashtirishlar (Performance):
Regulyar ifodalar (regex) yordamida tinish belgilari va so‘zlarni aniqlash aniqroq bo‘ladi:
❓ Siz bu funksiyani yana qanday optimallashtirar edingiz?
💬 Fikringizni kommentda yozing!
https://t.me/simplypythonuz
Masala:
Foydalanuvchidan satr (matn) qabul qiladigan funksiya yozing va shu satrdagi unikal (takrorlanmas) so‘zlar sonini qaytaring.
Satrda so‘zlar bo‘sh joy bilan ajratilgan, tinish belgilari olib tashlanishi kerak.
📌 Tushuntirish:
Ushbu kodda
string.punctuation yordamida barcha tinish belgilari aniqlanadi va str.translate() orqali ularni satrdan tozalaymiz.Keyin butun matnni kichik harflarga o'tkazib, bo‘sh joy bo‘yicha bo‘lib chiqamiz va
set yordamida unikal so‘zlarni sanaymiz.
import string
def count_unique_words(text):
text = text.translate(str.maketrans('', '', string.punctuation))
words = text.lower().split()
return len(set(words))
count_unique_words("Hello, hello world!") # ➝ 2
⚙️ Optimallashtirishlar (Performance):
Regulyar ifodalar (regex) yordamida tinish belgilari va so‘zlarni aniqlash aniqroq bo‘ladi:
import re
def count_unique_words(text):
words = re.findall(r'\b\w+\b', text.lower())
return len(set(words))
print(count_unique_words("Hello, world! Hello again.")) # ➝ 3
print(count_unique_words("Python, Java. Python?")) # ➝ 2
❓ Siz bu funksiyani yana qanday optimallashtirar edingiz?
💬 Fikringizni kommentda yozing!
https://t.me/simplypythonuz
📦 #Python | gzip moduli — fayllarni siqish va arxivdan chiqarish
🔹 Asosiy imkoniyatlari:
- Fayllarni
-
- Oddiy baytlar massivini siqish/decompress qilish
📘 Misollar:
✅ 1. Faylni siqish (compress)
✅ 2. Siqilgan .gz faylni ochish (decompress)
✅ 3. Matnni bevosita siqish va ochish
⚠️ Eslatma: Bu modul faqat
https://t.me/simplypythonuz
gzip moduli — bu .gz formatdagi fayllar bilan ishlashni soddalashtiruvchi kuchli vosita. U orqali matnli fayllarni siqish (compress) yoki arxivdan chiqarish (decompress) mumkin.🔹 Asosiy imkoniyatlari:
- Fayllarni
.gz formatda siqish-
.gz fayllarni o‘qish va arxivdan chiqarish- Oddiy baytlar massivini siqish/decompress qilish
📘 Misollar:
✅ 1. Faylni siqish (compress)
import gzip
with open('data.txt', 'rb') as f_in:
with gzip.open('data.txt.gz', 'wb') as f_out:
f_out.writelines(f_in)
✅ 2. Siqilgan .gz faylni ochish (decompress)
import gzip
with gzip.open('data.txt.gz', 'rb') as f:
content = f.read()
print(content.decode('utf-8'))
✅ 3. Matnni bevosita siqish va ochish
import gzip
original = b"Salom, dunyo!"
compressed = gzip.compress(original)
decompressed = gzip.decompress(compressed)
print(decompressed.decode()) # ➝ Salom, dunyo!
⚠️ Eslatma: Bu modul faqat
.gz formatni qo‘llab-quvvatlaydi. compress, pack kabi bash buyruqlari yaratgan fayllar mos kelmaydi.https://t.me/simplypythonuz
🖼 #Python | Pillow — Python’da rasm bilan ishlash kutubxonasi
🔹 Rasmni boshqa formatga o‘tkazish
🔹 Filtrlar qo‘llash
🔹 Rasmni aylantirish
🔹 Thumbnail (miniatura) yaratish
🔹 Bir nechta rasmni paketli tarzda qayta ishlash
✅ Pillow kutubxonasini o‘rnatish:
📚 Batafsil hujjat:
🧪 Misol: Rasmdan foydalanish va uni ko‘rsatish
https://t.me/simplypythonuz
Pillow — bu mashhur Python Imaging Library (PIL) kutubxonasining davomidir. U rasm fayllari bilan ishlashni soddalashtiradi va quyidagi ishlar uchun juda qulay:🔹 Rasmni boshqa formatga o‘tkazish
🔹 Filtrlar qo‘llash
🔹 Rasmni aylantirish
🔹 Thumbnail (miniatura) yaratish
🔹 Bir nechta rasmni paketli tarzda qayta ishlash
✅ Pillow kutubxonasini o‘rnatish:
pip install Pillow
📚 Batafsil hujjat:
pypi.org/project/Pillow🧪 Misol: Rasmdan foydalanish va uni ko‘rsatish
from PIL import Image
# Rasmni ochish
img = Image.open("rasm.jpg")
# O‘lchamini ko‘rsatish
print(img.size)
# Rasmni ko‘rsatish
img.show()
Pillow — ko‘p sonli rasmlar bilan avtomatik ishlash kerak bo‘lganda (masalan, watermark qo‘yish, format o‘zgartirish) juda mos keladi. 👌https://t.me/simplypythonuz
Quyida
💧 Rasmga watermark qo‘yish (Pillow bilan)
📝 E'tibor bering:
-
-
-
Bu usul yordamida logotip, matn, yoki mualliflik huquqi belgilarini rasm ustiga oson qo‘yishingiz mumkin.
https://t.me/simplypythonuz
Pillow kutubxonasi yordamida rasmga watermark (suv belgisi) qo‘yish bo‘yicha oddiy misol:💧 Rasmga watermark qo‘yish (Pillow bilan)
from PIL import Image, ImageDraw, ImageFont
# Rasmni RGBA formatda ochish
image = Image.open("rasm.jpg").convert("RGBA")
# Watermark uchun bo'sh qatlam
txt_layer = Image.new("RGBA", image.size, (255, 255, 255, 0))
# Chizuvchi obyekt
draw = ImageDraw.Draw(txt_layer)
# Shrift (yo‘lni o‘zingiznikiga moslang)
font = ImageFont.truetype("arial.ttf", 40)
# Watermark matni va joylashuvi
text = "© PythonWithTheBest"
position = (20, image.size[1] - 60)
# Watermark rangi (masalan: qizil va 100% shaffoflik)
# Rang formati: (R, G, B, A) — A: opacity (0–255)
color = (255, 0, 0, 255) # Qizil
# Matnni chizamiz
draw.text(position, text, font=font, fill=color)
# Asosiy rasm va watermarkni birlashtiramiz
watermarked = Image.alpha_composite(image, txt_layer)
# Saqlaymiz
watermarked.convert("RGB").save("rasm_watermarked.jpg", "JPEG")
📝 E'tibor bering:
-
arial.ttf o‘rniga tizimingizdagi mavjud shriftni yozing (/usr/share/fonts, C:\Windows\Fonts, yoki .ttf fayl yo‘li).-
fill=(255, 255, 255, 128) bu oq rangli, 50% shaffof watermark.-
alpha_composite — qatlamlarni shaffoflik bilan birlashtiradi.Bu usul yordamida logotip, matn, yoki mualliflik huquqi belgilarini rasm ustiga oson qo‘yishingiz mumkin.
https://t.me/simplypythonuz
👍1
✅ #Python | Internetdan rasmni yuklab olish
Agar sizda rasmning URL manzili bo‘lsa, uni kompyuteringizga yuklab olish uchun quyidagi oddiy Python dasturidan foydalanishingiz mumkin:
🧠 Eslatma:
-
- Fayl
- Fayl nomini istalgancha o‘zgartirishingiz mumkin:
https://t.me/simplypythonuz
Agar sizda rasmning URL manzili bo‘lsa, uni kompyuteringizga yuklab olish uchun quyidagi oddiy Python dasturidan foydalanishingiz mumkin:
import requests
# Rasm URL manzili
url = "https://example.com/image.jpg"
# HTTP so'rov yuborish
response = requests.get(url)
# Agar so'rov muvaffaqiyatli bo'lsa, faylni yozamiz
if response.status_code == 200:
with open("rasm.jpg", "wb") as file:
file.write(response.content)
print("✅ Rasm muvaffaqiyatli saqlandi.")
else:
print("❌ Rasmni yuklab bo‘lmadi.")
🧠 Eslatma:
-
requests moduli Python’da vebdan ma’lumot olish uchun ishlatiladi.- Fayl
.jpg, .png, .webp formatlarda bo‘lishi mumkin — .content orqali rasm binar ko‘rinishda olinadi.- Fayl nomini istalgancha o‘zgartirishingiz mumkin:
rasm.jpg → avatar.png va hokazo.https://t.me/simplypythonuz
✅ #Python | if shartlarini soddalashtiring
Ko‘p qiymatlarni tekshirish kerak bo‘lganda,
❌ Noto‘g‘ri (keraksiz uzun):
✅ To‘g‘ri (soddaroq va aniq):
🧠 Foydali maslahat:
Bunday soddalashtirishlar kodni toza, ixcham va tushunarli qilishga yordam beradi 💡
https://t.me/simplypythonuz
Ko‘p qiymatlarni tekshirish kerak bo‘lganda,
if operatorlarini quyidagi kabi soddalashtirish mumkin:❌ Noto‘g‘ri (keraksiz uzun):
if x == 1 or x == 2 or x == 3:
print("Topildi")
✅ To‘g‘ri (soddaroq va aniq):
if x in (1, 2, 3):
print("Topildi")
🧠 Foydali maslahat:
x in (1, 2, 3) — bu x ning 1, 2 yoki 3 ga teng ekanini tekshiradi. Kodni o‘qish osonlashadi va yozish tezlashadi.Bunday soddalashtirishlar kodni toza, ixcham va tushunarli qilishga yordam beradi 💡
https://t.me/simplypythonuz
⚡2
🧼 #Python | Ichki ro‘yxatlardan (nested lists) dublikatlarni o‘chirish
Ba'zida sizda shunday ro‘yxat bo‘ladi:
Va siz dublikatlarni olib tashlamoqchisiz. Ammo set dan to‘g‘ridan-to‘g‘ri foydalana olmaysiz, chunki list o‘zgaruvchan (
✅ Oddiy va samarali yechim:
🎯 Xulosa:
- Har bir ichki ro‘yxatni
-
- Natijani qayta
📌 Natija: tejamkor, tez va sikllarsiz kod
https://t.me/simplypythonuz
Ba'zida sizda shunday ro‘yxat bo‘ladi:
lists = [[1, 2], [3, 4], [1, 2]]
Va siz dublikatlarni olib tashlamoqchisiz. Ammo set dan to‘g‘ridan-to‘g‘ri foydalana olmaysiz, chunki list o‘zgaruvchan (
unhashable) tur.✅ Oddiy va samarali yechim:
lists = [[1, 2], [3, 4], [1, 2]]
# Dublikatlarni olib tashlaymiz
unique_lists = [list(t) for t in set(tuple(lst) for lst in lists)]
print(unique_lists)
# ➝ [[1, 2], [3, 4]]
🎯 Xulosa:
- Har bir ichki ro‘yxatni
tuple ga aylantiring — ular set ichida ishlaydi-
set bilan dublikatlarni yo‘q qiling- Natijani qayta
list ga aylantiring📌 Natija: tejamkor, tez va sikllarsiz kod
https://t.me/simplypythonuz
🔍 #Python |
Pythonda
✅ Hashable — bu o‘zgarmas (immutable) obyektlar, masalan:
❌ Unhashable — bu o‘zgaruvchan (mutable) obyektlar, masalan:
💡 Nega bu muhim?
Agar siz
🧠 Xulosa:
-
-
https://t.me/simplypythonuz
unhashable nima degani?Pythonda
set, dict kabi xotirada tartiblanadigan ma’lumotlar tuzilmalari (hash table) faqat hashable obyektlar bilan ishlay oladi.✅ Hashable — bu o‘zgarmas (immutable) obyektlar, masalan:
int, float, str, tuple (agar ichida hamma narsa hashable bo‘lsa)
x = (1, 2)
set([x]) # Ishlaydi ✅
❌ Unhashable — bu o‘zgaruvchan (mutable) obyektlar, masalan:
list, dict, set — bu obyektlar set yoki dict kaliti sifatida ishlatilmaydi.
x = [1, 2]
set([x]) # ❌ TypeError: unhashable type: 'list'
💡 Nega bu muhim?
Agar siz
list larni set ichiga solmoqchi bo‘lsangiz, avval ularni tuple ga o‘giring:
lists = [[1, 2], [3, 4], [1, 2]]
# list → tuple → set → list
unique = [list(t) for t in set(tuple(x) for x in lists)]
print(unique)
🧠 Xulosa:
-
hashable → o‘zgarmas, set va dict uchun ishlaydi.-
unhashable → o‘zgaruvchan, to‘g‘ridan-to‘g‘ri set ga qo‘shib bo‘lmaydi.https://t.me/simplypythonuz
🔁 Counter.elements() metodi — Python'da foydali imkoniyat!
✅ Har bir element o‘z qiymati (soni) nechta bo‘lsa, shuncha marta chiqariladi.
✅ Tartib saqlanadi — ya'ni elementlar
🚫 Agar element qiymati 1 dan kam bo‘lsa, u umuman chiqarilmaydi.
📌 Misol:
Python'da ma'lumotlar bilan ishlashni osonlashtiruvchi usullardan biri 💡
Counter.elements() — bu metod har bir elementni uning soniga qarab takrorlab, iterator ko‘rinishida qaytaradi.✅ Har bir element o‘z qiymati (soni) nechta bo‘lsa, shuncha marta chiqariladi.
✅ Tartib saqlanadi — ya'ni elementlar
Counter yaratilganidagi ketma-ketlikda bo‘ladi.🚫 Agar element qiymati 1 dan kam bo‘lsa, u umuman chiqarilmaydi.
📌 Misol:
from collections import Counter
cnt = Counter({'a': 3, 'b': 1, 'c': 0})
print(list(cnt.elements()))
# Natija: ['a', 'a', 'a', 'b']
Python'da ma'lumotlar bilan ishlashni osonlashtiruvchi usullardan biri 💡
Xayrli tong! So'ngi paytlarda python olamidagi eng katta o'zgarishlardan biri bu uv bo'lsa kerak.
Menimcha ko'pchilik duch kelayotgan yoki ishlatishni boshlagan ushbu vosita haqida ozgina ma'lumot bersak foydadan holi bo'lmaydi. Demak boshladik:
uv bu Rust dasturlash tilida yozilgan, pip, venv, piptools va boshqa shunga o'xshash kutubxonlarning o'rnini bosa oladigan python kutubxonasidir.
Uning eng asosiy afzalligi tezlik bo'lib, pip dan 100 karragacha tezroq ishlashi mumkin.
Ha, tushunganingizdek butun dunyo pip install dan voz kechib uv add ga kamida uv pip install ga o'tmoqda.
Tezlikdan tashqari, uv ancha qulayhamdir.
Masalan, biz o'rgangan pip, venv dan foydalanib biron loyiha yaratishda avval venv yordamida virual muhit yaratiladi, pip install yordamida kerakli kutubxonalar qo'shiladi, requirements.txt to'ldirilib boriladi va hokazo.
uv yordamida esa:
uv init .
uv add <package_name>
va hammasi tayyor! pyproject.toml fayli orqali barcha kutubxonalar ro'yxati yuritiladi. Kutubxonalarni ushbu faylga yozib/o'chirib uv sync buyrug'i yozilsa, kutubxonalar avtomatik o'rnatiladi/o'chiriladi.
Bundan tashqari, uv da loyiha uchun alohida, bitta script uchun alohida yondashuv qilingan.
Qisqa qilib aytganda juda qulay.
Quyida ushbu vositani foydalanish uchun asosiy buyruqlar keltirilgan:
Python versiyasini o'rnatish:
uv python install 3.8
Scriptni ishga tushirish:
uv run main.py
Scriptni ishga tushirishda python versiyani belgilash:
uv run —python 3.9.21 main.py
Scriptni ishga tushirishda biron kutubxonani (ushbu buyruqda rich va requests) o'rnatib ishga tushirish:
uv run —with rich —with requests —python 3.9 main.py
Scriptni ishga tushirishda kerak bo'ladigan python versiya hamda kutubxonlarni scriptning o'zida belgilab qo'yish:
uv init —script main.py —python 3.9.21
uv add —script main.py "rich"
uv add —script main.py "requests"
Faqat bitta script emas, Loyiha boshqaruvi uchun buyruqlar:
uv init . # Kerakli fayllarni yaratadi.
uv add rich # rich kutubxonasini venv direktoriyasiga o'rnatadi hamda pyproject.toml ni yangilaydi
uv remove rich # rich rich kutubxonasini venv direktoriyasidan o'chiradi hamda pyproject.toml ni yangilaydi
uv sync # pyproject.toml, .python-version bilan venv o'rtasida sinxronizatsiyani amalga oshiradi.
Boshqa ma'lumotlarni quyidagi havola orqali ko'rib olishingiz mumkin.
Izohlarda fikringizni qoldiring, foydali deb hisoblasangiz boshqalarga ham ulashishni unutmang.
Kuningiz xayrli o'tsin!
@simplypythonuz
Menimcha ko'pchilik duch kelayotgan yoki ishlatishni boshlagan ushbu vosita haqida ozgina ma'lumot bersak foydadan holi bo'lmaydi. Demak boshladik:
uv bu Rust dasturlash tilida yozilgan, pip, venv, piptools va boshqa shunga o'xshash kutubxonlarning o'rnini bosa oladigan python kutubxonasidir.
Uning eng asosiy afzalligi tezlik bo'lib, pip dan 100 karragacha tezroq ishlashi mumkin.
Ha, tushunganingizdek butun dunyo pip install dan voz kechib uv add ga kamida uv pip install ga o'tmoqda.
Tezlikdan tashqari, uv ancha qulayhamdir.
Masalan, biz o'rgangan pip, venv dan foydalanib biron loyiha yaratishda avval venv yordamida virual muhit yaratiladi, pip install yordamida kerakli kutubxonalar qo'shiladi, requirements.txt to'ldirilib boriladi va hokazo.
uv yordamida esa:
uv init .
uv add <package_name>
va hammasi tayyor! pyproject.toml fayli orqali barcha kutubxonalar ro'yxati yuritiladi. Kutubxonalarni ushbu faylga yozib/o'chirib uv sync buyrug'i yozilsa, kutubxonalar avtomatik o'rnatiladi/o'chiriladi.
Bundan tashqari, uv da loyiha uchun alohida, bitta script uchun alohida yondashuv qilingan.
Qisqa qilib aytganda juda qulay.
Quyida ushbu vositani foydalanish uchun asosiy buyruqlar keltirilgan:
Python versiyasini o'rnatish:
uv python install 3.8
Scriptni ishga tushirish:
uv run main.py
Scriptni ishga tushirishda python versiyani belgilash:
uv run —python 3.9.21 main.py
Scriptni ishga tushirishda biron kutubxonani (ushbu buyruqda rich va requests) o'rnatib ishga tushirish:
uv run —with rich —with requests —python 3.9 main.py
Scriptni ishga tushirishda kerak bo'ladigan python versiya hamda kutubxonlarni scriptning o'zida belgilab qo'yish:
uv init —script main.py —python 3.9.21
uv add —script main.py "rich"
uv add —script main.py "requests"
Faqat bitta script emas, Loyiha boshqaruvi uchun buyruqlar:
uv init . # Kerakli fayllarni yaratadi.
uv add rich # rich kutubxonasini venv direktoriyasiga o'rnatadi hamda pyproject.toml ni yangilaydi
uv remove rich # rich rich kutubxonasini venv direktoriyasidan o'chiradi hamda pyproject.toml ni yangilaydi
uv sync # pyproject.toml, .python-version bilan venv o'rtasida sinxronizatsiyani amalga oshiradi.
Boshqa ma'lumotlarni quyidagi havola orqali ko'rib olishingiz mumkin.
Izohlarda fikringizni qoldiring, foydali deb hisoblasangiz boshqalarga ham ulashishni unutmang.
@simplypythonuz
docs.astral.sh
uv
uv is an extremely fast Python package and project manager, written in Rust.
👍3❤1
🔍 Python'dagi
Python juda foydali bo‘lgan
📘 Misol:
🔎
Yana misollar:
🚀 Juda oddiy, lekin kuchli vosita!
https://t.me/simplypythonuz
difflib — matnlar o‘rtasida o‘xshashlikni topish!Python juda foydali bo‘lgan
difflib kutubxonasini taqdim etadi. U orqali matnlardagi o‘xshashliklarni topish mumkin — ayniqsa, so‘zlar orasidan eng yaqinlarini tanlash kerak bo‘lsa, juda qulay.📘 Misol:
import difflib
words = ["apple", "ape", "appeal", "par", "parade"]
print(difflib.get_close_matches("appel", words))
# ➝ ['appeal', 'apple', 'ape']
🔎
"appel" so‘ziga eng o‘xshashlari qaytarildi. Bu difflib.get_close_matches() funksiyasi orqali bo‘ldi.Yana misollar:
print(difflib.get_close_matches("pa", words))
# ➝ ['par']
print(difflib.get_close_matches("par", words))
# ➝ ['par', 'parade']
"parade" boshlanishi "par" ga o‘xshaganligi sababli chiqarildi.🚀 Juda oddiy, lekin kuchli vosita!
https://t.me/simplypythonuz
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Lirik chekinish😂
⏱️ Python'da mikrosekundgacha aniqlik —
Agar siz loglar, metrikalar yoki vaqt qatorlari bilan aniq vaqt bilan ishlayotgan bo‘lsangiz,
📌 Misol:
📅 Formatlar:
🧠 Bu — vaqtni yuqori aniqlikda tahlil qilishda ayni muddao!
https://t.me/simplypythonuz
datetime.strptime() bilan!Agar siz loglar, metrikalar yoki vaqt qatorlari bilan aniq vaqt bilan ishlayotgan bo‘lsangiz,
datetime.strptime() metodida "%f" formatini unutmang!📌 Misol:
from datetime import datetime
dt = datetime.strptime('2024-06-18 12:34:56.789123', '%Y-%m-%d %H:%M:%S.%f')
print(dt) # ➝ 2024-06-18 12:34:56.789123
📅 Formatlar:
%Y — yil (4 raqam)%m — oy%d — kun%H — soat (24 soatlik format)%M — daqiqa%S — soniya%f — mikrosekund ⚡️🧠 Bu — vaqtni yuqori aniqlikda tahlil qilishda ayni muddao!
https://t.me/simplypythonuz
👍1
🧊 Lug‘atdan xavfsiz qiymat olish —
Ba'zida lug‘atdan (
📌 Misol:
🚫
✅
🎯 Natija:
https://t.me/simplypythonuz
.get() yordamida!Ba'zida lug‘atdan (
dict) qiymat olish kerak bo‘ladi, lekin kalit mavjud emas bo‘lishi mumkin. Bunday hollarda if yozib tekshirish o‘rniga — .get() metodidan foydalaning ✅📌 Misol:
data = {"name": "Ali"}
# Xavfsiz tarzda qiymat olish
age = data.get("age", 0) # Agar "age" yo‘q bo‘lsa, 0 qaytadi
🚫
data["age"] — bu xatolik beradi, agar kalit yo‘q bo‘lsa.✅
data.get("age", 0) — xatolik bo‘lmaydi, default qiymat qaytadi.🎯 Natija:
.get() metodi kodni toza, xavfsiz va o‘qilishi oson qiladi — ayniqsa ixtiyoriy yoki noma'lum ma'lumotlar bilan ishlaganda!https://t.me/simplypythonuz