Zen of Python
ΠΠΎΠ»Π½ΡΠΉ ΠΠ·Π΅Π½ ΠΠ°ΠΉΡΠΎΠ½Π° Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Π½Π°Π»Π΅ Π Π°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ: @tproger_sales_bot ΠΡΠ°Π²ΠΈΠ»Π° ΠΎΠ±ΡΠ΅Π½ΠΈΡ: https://tprg.ru/rules ΠΡΡΠ³ΠΈΠ΅ ΠΊΠ°Π½Π°Π»Ρ: @tproger_channels Π‘Π°ΠΉΡ: https://tprg.ru/site Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π² ΠΏΠ΅ΡΠ΅ΡΠ½Π΅ Π ΠΠ: https://tprg.ru/xZOL
Ko'proq ko'rsatishπ Telegram kanali Zen of Python analitikasi
Zen of Python (@zen_of_python) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 18 714 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 7 010-o'rinni va Rossiya mintaqasida 35 227-o'rinni egallagan.
π Auditoriya koβrsatkichlari va dinamika
Π½Π΅Π²ΡΠ΄ΠΎΠΌΠΎ sanasidan buyon loyiha tez oβsib, 18 714 obunachiga ega boβldi.
28 Oktabr, 2026 dagi oxirgi maβlumotlarga koβra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -100 ga, soβnggi 24 soatda esa -10 ga oβzgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya oβrtacha 6.22% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 4.24% ini tashkil etuvchi reaksiyalarni toβplaydi.
- Post qamrovi: Har bir post oβrtacha 1 165 marta koβriladi; birinchi sutkada odatda 793 ta koβrish yigβiladi.
- Reaksiyalar va oβzaro taβsir: Auditoriya faol: har bir postga oβrtacha 1 ta reaksiya keladi.
- Tematik yoβnalishlar: Kontent github, rust, pip, api, install kabi asosiy mavzularga jamlangan.
π Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida taβriflaydi:
βΠΠΎΠ»Π½ΡΠΉ ΠΠ·Π΅Π½ ΠΠ°ΠΉΡΠΎΠ½Π° Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Π½Π°Π»Π΅
Π Π°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ: @tproger_sales_bot
ΠΡΠ°Π²ΠΈΠ»Π° ΠΎΠ±ΡΠ΅Π½ΠΈΡ: https://tprg.ru/rules
ΠΡΡΠ³ΠΈΠ΅ ΠΊΠ°Π½Π°Π»Ρ: @tproger_channels
Π‘Π°ΠΉΡ: https://tprg.ru/site
Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π² ΠΏΠ΅ΡΠ΅ΡΠ½Π΅ Π ΠΠ: https://tprg.ru/xZOLβ
Yuqori yangilanish chastotasi (oxirgi maβlumot 29 Oktabr, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli boβlib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim taβsir nuqtasiga aylantirishini koβrsatadi.
@pytest.mark.parametrize: ΠΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΡΡ
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠΎΠΌΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ. ΠΠΎΠ³Π΄Π° Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡ
ΠΎΠΆΠΈΡ
ΡΠ΅ΡΡΠΎΠ²ΡΡ
ΡΠ»ΡΡΠ°Π΅Π², Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°. ΠΠΌΠ΅Π½Π½ΠΎ Π·Π΄Π΅ΡΡ Π½Π° ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ @pytest.mark.parametrize.
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°. Π£ Π½Π°Ρ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ add_nums(), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΡΠΈΡΠ»Π° ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°:
def add_nums(numbers):
return sum(numbers)
ΠΠ΅Π· parametrize ΡΠ΅ΡΡΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
def test_123():
assert add_nums([1, 2, 3]) == 6
def test_negatives():
assert add_nums([1, 2, -3]) == 0
def test_empty():
assert add_nums([]) == 0
Π§ΡΠΎ Π½Π΅ ΡΠ°ΠΊ Ρ ΡΡΠΈΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠΌ? ΠΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°: ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΠ΅ΡΡΠΎΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅Ρ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΡΡΡΡΠΊΡΡΡΡ. ΠΠΌΠ΅ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ΅Ρ
ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ΄Π½Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ:
import pytest
@pytest.mark.parametrize(
"nums, expected_total",
[
([1, 2, 3], 6),
([1, 2, -3], 0),
([], 0),
]
)
def test_add_nums(nums, expected_total):
assert add_nums(nums) == expected_total
1. @pytest.mark.parametrize β ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ pytest
2. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ "nums, expected_total" β ΠΈΠΌΠ΅Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ
3. Π’Π΅ΡΡΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ β ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ°
Pytest Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²:
# ΠΠ΅ΡΠ²ΡΠΉ Π²ΡΠ·ΠΎΠ²
test_add_nums([1, 2, 3], 6)
# ΠΡΠΎΡΠΎΠΉ Π²ΡΠ·ΠΎΠ²
test_add_nums([1, 2, -3], 0)
# Π’ΡΠ΅ΡΠΈΠΉ Π²ΡΠ·ΠΎΠ²
test_add_nums([], 0)
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: 3 ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΡΠ΅ΡΡΠ°, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ
ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΉΡΠΈ ΠΈΠ»ΠΈ ΡΠΏΠ°ΡΡΡ.
ΠΠ°ΡΡΠΎΠΌΠ½ΡΠ΅ ID Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ²
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ pytest Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ID Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ², Π½ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π΄Π°ΡΡ ΡΠ²ΠΎΠΈ:
@pytest.mark.parametrize(
"nums, expected_total",
[
([1, 2, 3], 6),
([1, 2, -3], 0),
([], 0),
],
ids=["positive_numbers", "mixed_numbers", "empty_list"]
)
def test_add_nums(nums, expected_total):
assert add_nums(nums) == expected_total
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠ΅ΡΡΠΎΠ² Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅:
test_add_nums[positive_numbers] PASSED test_add_nums[mixed_numbers] PASSED test_add_nums[empty_list] PASSEDΠΠ»ΠΎΠΆΠ΅Π½Π½Π°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·Π°ΡΠΈΡ ΠΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·Π°ΡΠΈΠΉ:
@pytest.mark.parametrize("x", [1, 2, 3])
@pytest.mark.parametrize("y", [10, 20])
def test_multiply(x, y):
assert x * y == x * y
ΠΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ 6 ΡΠ΅ΡΡΠΎΠ²: (1,10), (1,20), (2,10), (2,20), (3,10), (3,20).
#ΠΎΡΠ½ΠΎΠ²Ρ
@zen_of_pythontyro.cli() Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Python-ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡ Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΠΌΠΈ ΡΠΈΠΏΠΎΠ² Π² ΠΏΠΎΠ»Π½ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²ΡΡΡΠ½ΡΡ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΏΠ°ΡΡΠΈΠ½Π³ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²:
@dataclass
class Config:
input_file: str
verbose: bool = False
ΠΠ΄Π΅ΡΡ tyro.cli(Config) ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠΉ CLI, Π³Π΄Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ --input-file ΠΈ --verbose Π±ΡΠ΄ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Ρ, Π° ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΏΠΎΠΌΠΎΡΡ (--help).
Π£ΡΠΈΠ»ΠΈΡΠ° ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΈ doc-ΡΡΡΠΎΠΊΠΈ. ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΡΠΈΠΏΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΎΠΏΠ΅ΡΠΈΡΡΡΡ IDE ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ mypy, pyright: Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ, ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ β Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Β«ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈΒ». ΠΡΠΎ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π°Π²ΡΠΎΠΊΠΎΠΌΠΏΠ»ΠΈΡΠΈΡΡ Ρ Tab.
#ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ
@zen_of_python
from fastapi import FastAPI
from fastapi_mcp import FastApiMCP
app = FastAPI()
mcp = FastApiMCP(app)
# Mount the MCP server directly to your FastAPI app
mcp.mount()
#ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ
@zen_of_python