ΠΠΎΡΠΎΠ±ΠΊΠ° Ρ ΠΏΠΈΡΠΎΠ½ΠΎΠΌ
Open in Telegram
ΠΠ°ΠΌΠ΅ΡΠΊΠΈ ΠΎΡ Python-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°: ΡΠ½ΠΈΠΏΠΏΠ΅ΡΡ, ΠΎΠ±Π·ΠΎΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², Π½ΠΎΠ²ΠΎΡΡΠΈ ΠΈ Π΄ΡΡΠ³Π°Ρ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠ²ΡΠΎΡ: @kiriharu
Show more462
Subscribers
-124 hours
No data7 days
-530 days
Posts Archive
ΠΡΡΠ°ΡΠΈ ΠΏΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΌ tablib!
ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ "ΡΠ°Π±Π»ΠΈΡΠ½ΡΠ΅ Π΄Π°ΡΠ°ΡΠ΅ΡΡ" Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (ΠΏΠΎΠΈΡΠΊ Π΄Π°Π½Π½ΡΡ
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ) ΠΈΠ»ΠΈ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ
Π² Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΉ ΡΠΎΡΠΌΠ°Ρ.
ΠΠ»Ρ ΡΠ΅Ρ
, ΠΊΡΠΎ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ "ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΉ Π΄Π°ΡΠ°ΡΠ΅Ρ" (tabular data sets) - ΠΏΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ ΡΡΠΎ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ
Π² Π²ΠΈΠ΄Π΅ ΡΠ°Π±Π»ΠΈΡΠΊΠΈ.
Π‘Π°ΠΌ tablib ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ΅Π³ΡΠ΅Π³Π°ΡΠΈΡ, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΈΠ»ΡΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
. ΠΡ ΠΈ Π²ΠΈΡΠ΅Π½ΠΊΠ° Π½Π° ΡΠΎΡΡΠ΅ - ΡΠΊΡΠΏΠΎΡΡ Π² ΠΏΠΎΡΡΠΈ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ. ΠΠ° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅, ΠΊΡΡΠ°ΡΠΈ, ΠΏΡΠΈΠΌΠ΅Ρ :)
Github | ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
#Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
ΠΡΠΎΠ΅ΠΊΡ ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΏΠΈΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π½Π° Django, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΏΠΎ Π½Π΅ΠΉ π
ΠΡΡΡ Π·Π°Π΄Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠΏΠΎΡΡ/ΡΠΊΡΠΏΠΎΡΡ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ (Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠΎΡΠΌΠ°ΡΠ°Ρ
), Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° django-import-export ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π² ΠΊΡΠ°ΡΡΠ°ΠΉΡΠΈΠ΅ ΡΡΠΎΠΊΠΈ. ΠΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΠΈΠΌΠΏΠΎΡΡ/ΡΠΊΡΠΏΠΎΡΡ, Π½ΠΎ Π·Π°ΡΠ΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ°ΡΡ Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄? Π ΡΠ»ΠΎΠ²Ρ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ, Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π½Π° Π³ΠΈΡΡ
Π°Π±Π΅ Π΅ΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½Π΅ΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π±ΡΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ.
Π§ΡΠΎ ΠΎΠ½Π° ΡΠΌΠ΅Π΅Ρ?
- ΠΠΊΡΠΏΠΎΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ: Excel, CSV, JSON ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΎΡΠΌΠ°Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ tablib
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Π°Π΄ΠΌΠΈΠ½ΠΊΠΎΠΉ (ΠΈΠΌΠΏΠΎΡΡ, ΡΠΊΡΠΏΠΎΡΡ)
- ΠΡΠ΅Π²ΡΡ ΠΈΠΌΠΏΠΎΡΡΠ°
- ΠΠΊΡΠΏΠΎΡΡ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΡΠΈΠ»ΡΡΡΠΎΠ²
Github | ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
#Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° #django
ΠΠ°Π²Π½ΡΠΌ Π΄Π°Π²Π½ΠΎ Ρ ΠΏΠΈΡΠ°Π» ΠΎΠ±Π΅ΡΡΠΊΡ Π΄Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡ-ΡΡΠ±Ρ. ΠΠ½Π° Π½ΡΠΆΠ½Π° Π±ΡΠ»Π° ΡΡΠΎΠ±Ρ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΠ»Ρ Ρ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ.
Π‘ΠΎΠ²ΡΠ΅ΠΌ Π½Π΅Π΄Π°Π²Π½ΠΎ Ρ Π½Π°ΡΠ°Π» ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΡΠ³Π»ΡΠ±ΠΈΠ»ΡΡ Π² ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΌΠΎΠ΅Π³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ΅ΡΡΡΡΠΎΠ² ΠΏΠΎ ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅ ΡΡΠ°Π»Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Faker.
Faker Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠ΅ΠΉΠΊΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΡΠΈ ΡΠ΅ΠΌ, ΠΎΠ½ ΡΠΌΠ΅Π΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΡ - ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ ΡΠΌΠ΅Π΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π°Π΄ΡΠ΅ΡΠ°, ΠΈΠΌΠ΅Π½Π°, Π° Π΅ΡΠ»ΠΈ ΡΠ΅Π³ΠΎ-ΡΠΎ Π½Π΅Ρ - ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΈΡΠΊΠ°ΡΡ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ.
Github | ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
#ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ #Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΈΡΠΈΡΠ΅ Π½Π° Django ΠΈΠ»ΠΈ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ ΠΏΠΈΡΠ°ΡΡ Π½Π° Π½ΡΠΌ, Ρ Π½Π°ΡΡΠ» Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΡΠΉ ΠΈ Ρ
ΠΎΡΠΎΡΠΈΠΉ ΡΡΠ°ΠΈΠ»Π³Π°ΠΉΠ΄ ΠΎΡ HackSoftware, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΡΠ΅ΠΌΡ ΠΊΠΎΠ΄Ρ Π½Π° Django Π½Π΅ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡΡΡ Π² ΠΌΠ°ΠΊΠ°ΡΠΎΠ½Ρ.
Π‘ΡΠ°ΠΈΠ»Π³Π°ΠΉΠ΄ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΊΠ΅ΠΉΡΠΎΠ², Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ - ΠΎΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ, Π΄ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Celery.
#ΡΡΡΠ»ΠΎΡΠΊΠΈ #django
Ormar - ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½Π°Ρ ORM, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Postgres, MySQL ΠΈ SQLite. ΠΠΎΡΡΡΠΎΠ΅Π½Π° Π½Π° Π±Π°Π·Π΅ Pydantic ΠΈ SQLAlchemy.
Π‘ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° - ΡΠΎΠ·Π΄Π°ΡΡ Π»Π΅Π³ΠΊΡΡ ORM, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠ³Π»Π° Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ (Π² ΡΠΈΠΊΠ»Π΅ Π·Π°ΠΏΡΠΎΡ-ΠΎΡΠ²Π΅Ρ) Ρ FastAPI ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΠ΅ΠΈΠΌΠ²ΠΎΡΠΊΠ°ΠΌΠΈ.
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡ ΠΌΠ½Π΅Π½ΠΈΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π΅ΠΏΠ»ΠΎΡ
ΠΎ, ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ Π΄ΠΎΡΡΠΎΠΉΠ½Π°Ρ Π·Π°ΠΌΠ΅Π½Π° Π΄Π»Ρ WIP SQLModel.
Github | ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
#Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
What the f*ck Python - ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π½Π° Github, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ±ΡΠ°Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Ρ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡΠΌΠΈ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΡΡ ΡΠ΅ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ Π²Π΅ΡΠΈ Π² Python.
#ΡΡΡΠ»ΠΎΡΠΊΠΈ
ΠΡΠΎΠ³ΠΈ ΠΎΠΊΡΡΠ±ΡΡ!
π ΠΠ°ΠΌΠ΅ΡΠΊΠΈ:
- ΠΡΠΎ Poetry Π² Docker
- ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ requirements.txt ΡΠ΅ΡΠ΅Π· Poetry Π² Github Actions
- Π ΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΡ
ΠΎΠ΄ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ
πΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
- anytree
- aiomisc
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠΏΠΈΠ»ΠΈΡΡ GIL ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡ.
ΠΠ° Π΅ΠΆΠ΅Π³ΠΎΠ΄Π½ΡΠΉ Python core development sprint ΠΏΡΠΈΠ³Π»Π°ΡΠΈΠ»ΠΈ Sam Gross (Π°Π²ΡΠΎΡ
nogil), ΠΈ Π·Π°Π΄Π°Π²Π°Π»ΠΈ Π΅ΠΌΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π½ΡΡ
Π²ΠΎΠΏΡΠΎΡΠΎΠ². ΠΡΠ΅ ΠΏΠΎΠ΄ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠ΅ΠΌ. ΠΡΠ΅ΡΡΡΠ· ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΡΡΡ Π²Π»ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΠΊΠ° Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ΄ CPython, Π½ΠΎ ΡΠΏΠ΅ΡΠΈΡΡ Ρ ΡΡΠΈΠΌ ΡΠΎΡΠ½ΠΎ Π½Π΅ Π±ΡΠ΄ΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΌΠ°ΡΡΡΠ°Π±Π° Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΡΡΡ Π°Π΄Π°ΠΏΡΠ°ΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΡΡΠΏΠ½ΠΎΠ΅, Π½ΠΎ Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΊΡΡΠΊΠ°ΠΌΠΈ ΠΈ ΡΠ°ΡΡΡΠ½ΡΡΡ ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ, ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Python 4. Π Python 4 Π½ΠΈΠΊΡΠΎ Π½Π΅ Ρ
ΠΎΡΠ΅Ρ.
Π‘ΡΠΌΠ° ΠΏΡΠΈΠ³Π»Π°ΡΠΈΠ»ΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡΡΡ ΠΊ ΡΠΈΡΠ»Ρ core-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°. Εukasz Langa Π±ΡΠ΄Π΅Ρ Π΅Π³ΠΎ ΠΌΠ΅Π½ΡΠΎΡΠΈΡΡ.
ΠΠΎΠΊΠ° ΡΡΠΎ Π²ΡΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΎΡΠ΅Π½Ρ ΠΎΠΏΡΠΈΠΌΠΈΡΡΠΈΡΠ½ΠΎ. ΠΠ΄ΠΈΡΠ΅ Python 3.20 Π±Π΅Π· GIL π
https://lukasz.langa.pl/5d044f91-49c1-4170-aed1-62b6763e6ad0/
#gilaiomisc - ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΡΠΈΠ»ΠΈΡ Π΄Π»Ρ asyncio.
ΠΠ· ΡΠ°ΠΌΡΡ
ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
ΡΡΠΈΠ»ΠΈΡ Π΄Π»Ρ ΡΠ΅Π±Ρ Π²ΡΠ΄Π΅Π»ΠΈΠ» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ½ΡΡΠΈΠΏΠΎΠΈΠ½ΡΡ Ρ Π»ΠΎΠ³Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ»Π°ΡΡΠΎΠ²-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² (PeriodicService, CronService ΠΈ Ρ.Π΄.), ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»Π°ΠΌΠΈ.
GitHub | ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
#Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° #asyncio
Π ΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΡ
ΠΎΠ΄ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ
ΠΠ°Π΄Π°ΡΠΊΠ°: Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΉΡΠΈ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΈΠΊΠ» for.
Π Π΅ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠ΅ - ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
next() ΠΈ Π»ΠΎΠ²ΠΈΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ StopIteration. ΠΠ° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΊΠ»Π° while.
ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ - ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΏΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌ. ΠΠ°Π»ΡΡΠ΅ Π² ΡΠΈΠΊΠ»Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ next(), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈ ΡΠ°ΠΊ Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ ΠΏΠΎΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π΅ Π·Π°ΠΊΠΎΠ½ΡΠ°ΡΡΡ - ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΠΎΠ² ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ StopIteration.ΠΠΎΡΡΡΠ»Π΅ΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄ΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ πΏ!
ΠΠ΅Π»Π°Ρ Π±ΠΎΡΠ° Π² ΡΠ΅Π»Π΅Π³Π΅, ΡΠ΅ΡΠΈΠ» ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Github Actions ΠΏΡΠΎΠ³ΠΎΠ½ΡΡΡ ΡΠ΅ΡΡΡ Π² Π΄ΠΎΠΊΠ΅ΡΠ΅ ΠΈ Π΄Π°Π»ΡΡΠ΅ Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡ. ΠΠ΅Π½Π΅Π΄ΠΆΠΌΠ΅Π½Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΡΠ΅ΡΠ΅Π· poetry.
ΠΠ·-Π·Π° ΡΠΎΠ³ΠΎ ΡΡΠΎ poetry ΡΡΠ°Π²ΠΈΡ ΠΊΡΡΡ Π½Π΅Π½ΡΠΆΠ½ΡΡ
ΠΌΠ½Π΅ Π²Π΅ΡΠ΅ΠΉ, Ρ
ΠΎΡΠ΅ΡΡΡ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡ ΠΌΠΎΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² requirements.txt. ΠΠ΅ΡΠ²ΠΎΠΉ ΠΈΠ΄Π΅Π΅ΠΉ Π±ΡΠ» git hook, Π½ΠΎ Ρ Π½Π°Ρ ΡΡΡ Github Actions Π΅ΡΡΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π½Π΅Π³ΠΎ πΏ
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΡΠ°Π» Π²ΠΎΡ ΡΠ°ΠΊΠΎΠΉ workflow. ΠΠ½ΠΎ ΡΡΠ°Π²ΠΈΡ Ubuntu 20.04, Python 3.9 ΠΈ Poetry 1.1.7. ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠΊΡΠΏΠΎΡΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈ ΠΏΡΡΠΈΡ ΠΈΡ
Π²Π°ΠΌ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
ΠΠ°ΡΠ΅ΠΌ Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π»? ΠΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π΅Π»Π°Π΅Ρ Π²Π΅ΡΠ΅Π»ΡΠ΅ Π²Π΅ΡΠΈ.
#github #poetry
ΠΠ΅Π±ΠΎΠ»ΡΡΠΎΠΉ Ρ
ΠΈΠ½Ρ ΠΏΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Poetry Π² Docker - Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΎΠ±ΡΡΠ½ΡΠΉ requirements.txt, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΠ·Π±Π΅Π³Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ poetry.
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ - ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΠΈΡ
Π² requirements.txt. Π Π΄Π°Π»ΡΡΠ΅ ΡΡΠ°Π²ΡΡΠ΅ ΠΈΡ
ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΡΠ΅ΡΠ΅Π· pip.
#poetry #docker
ΠΠΎΠΈΡΠΊ N ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ
ΠΈΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· N ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ
ΠΈΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΌΠΎΠ΄ΡΠ»Ρ
heapq Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π² ΡΡΠΎΠΌ.
Π£ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π΅ΡΡΡ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ: nlargest() ΠΈ nsmallest(), ΠΊΠΎΡΠΎΡΡΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
>>> nums = [10, 20, 30, 40, 55, 632, -3, 98321, 82, 0, 8]
>>> heapq.nlargest(4, nums)
[98321, 632, 82, 55]
>>> heapq.nsmallest(4, nums)
[-3, 0, 8, 10]
ΠΠ±Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ key, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
currency = [
dict(name="Etherium", price=3323),
dict(name="Bitcoin", price=45538),
dict(name="ZCash", price=132),
dict(name="Litecoin", price=184),
dict(name="OmiseGo", price=8.933)
]
>>> heapq.nsmallest(2, currency, key=lambda s: s['price'])
[{'name': 'OmiseGo', 'price': 8.933}, {'name': 'ZCash', 'price': 132}]
>>> heapq.nlargest(2, currency, key=lambda s: s['price'])
[{'name': 'Bitcoin', 'price': 45538}, {'name': 'Etherium', 'price': 3323}]Π₯ΠΎΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π°ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠ°Π½Π°Π» Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Π½Π° Π½ΠΎΠ²ΠΎΡΡΠΈ, ΠΏΠΎΠ΄ΠΊΠ°ΡΡΡ, ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΈΠ· ΠΌΠΈΡΠ° Python.
ΠΡΠ»ΠΈ Ρ
ΠΎΡΠ΅ΡΡ Π²ΡΠ΅Π³Π΄Π° Π±ΡΡΡ Π² ΠΊΡΡΡΠ΅ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈ Π½Π΅ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ - ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΠΉΡΡ Π½Π° Python Daily.
Π ΠΊΠ°Π½Π°Π»Π΅ ΡΠ΄ΠΎΠ±Π½Π°Ρ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π³ΠΎΠ², Π° Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΠΈΠΌΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°ΠΌ Π²Π°ΠΌ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΡΡΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π² Π΄ΠΎΡΠΎΠ³Π΅ ΠΈΠ»ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠ±Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΡΡΠ²Π°.
https://t.me/pydaily
orjson - ΡΠ°ΠΌΠ°Ρ Π±ΡΡΡΡΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ (Π΄Π΅)ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ json, Π½Π°ΠΏΠΈΡΠ°Π½Π½Π°Ρ Π½Π° Rust.
Π£ΠΌΠ΅Π΅Ρ Π½Π°ΡΠΈΠ²Π½ΠΎ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠ· dataclass, datetime, numpy ΠΈ UUID. ΠΠΌΠ΅Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΡΠΈΠΉ Π΄Π»Ρ ΡΠΎΠ½ΠΊΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠ°ΡΡΠ΅ΡΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²Π΅ΡΠΈ ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅Ρ Π² ΠΏΠ°ΡΡΠ΅ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠΌΠ΅Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ UTF-8 ΠΈ JSON ΡΠΎΡΠΌΠ°ΡΡ.
PyPi | GitHub | ΠΠ΅Π½ΡΠΌΠ°ΡΠΊΠΈ
#Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
Π£ΠΆΠ΅ ΡΠ»ΡΡΠ°Π»ΠΈ ΠΎ ΠΏΠ°ΡΠ½Π΅, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΡΠΈΠ» ΡΠ΅Π»Π»Π΅Π½Π΄ΠΆ Π£ΡΡ Python Ρ Π½ΡΠ»Ρ? Π ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠ°Π½Π°Π»Π΅ ΠΎΠ½ Π΄Π΅Π»ΠΈΡΡΡ Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠ°ΠΌΠΈ ΠΎΡΡΠ΅ΡΠ°ΠΌΠΈ ΠΎ ΠΏΡΠΎΠΉΠ΄Π΅Π½Π½ΠΎΠΌ, ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ Π·Π°Π΄Π°Ρ ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°ΠΌΠΈ.
Π£ΠΆΠ΅ "Π·Π°ΠΊΡΡΠ»" ΠΎΡΠ½ΠΎΠ²Ρ ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΠΈ ΠΈΠ΄Π΅Ρ Π΄Π°Π»ΡΡΠ΅! Π¦Π΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΡΠ΅Π±Π΅ ΠΏΠΎΡΡΠ°Π²ΠΈΠ» - ΡΠ²ΠΎΠΉ Π±Π»ΠΎΠ³ Π½Π° Django Π΄ΠΎ ΠΠΎΠ²ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π°, Π° Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ - Π² 2ΠΊ22 ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΡΠ΅Ρ Π½Π° Π²Π°ΠΊΠ°Π½ΡΠΈΡ Π΄ΠΆΡΠ½ΠΈΠΎΡΠ°. Π, ΠΊΡΡΠ°ΡΠΈ, Π΅ΠΌΡ 33 Π³ΠΎΠ΄Π°, Π½Π°ΡΠΈΠ½Π°ΡΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠ·Π΄Π½ΠΎ!
Π‘Π΅ΠΉΡΠ°Ρ Π΅Π³ΠΎ ΠΊΠ°Π½Π°Π» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ-ΡΡΠ΅Π±Π½ΠΈΠΊ ΠΏΠΎ Python, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΎΡΠ½ΠΎΠ²! ΠΡΡΡ ΠΈ ΡΠ΅ΠΎΡΠΈΡ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, ΡΡΠΈ ΠΏΠ°ΠΉΡΠΎΠ½ ΠΏΡΡΠΌΠΎ Π² ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ!
Π ΠΎΠ±ΡΠ΅ΠΌ, Π½Π΅Ρ ΠΏΡΠΈΡΠΈΠ½ Π½Π΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ½Ρ, Π½Π΅ ΡΠΌΠΎΡΡΡ Π½ΠΈ Π½Π° ΡΡΠΎ ΠΎΠ½ Π΄Π²ΠΈΠΆΠ΅ΡΡΡ ΠΊ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ΅Π»ΠΈ, Π·Π° ΡΡΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΠΏΠΎΠ½Π°Π±Π»ΡΠ΄Π°ΡΡ!
ΠΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΡΠ΅ Π½Π° Π΅Π³ΠΎ ΠΊΠ°Π½Π°Π» @pywayru ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΡΠ΅ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΎΠΉ!
ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ all()
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Python ΠΏΠΎΠ»Π½Π° ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
Π²Π΅ΡΠ΅ΠΉ, Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ Π²Π΅ΡΠΈ Π΅ΡΡΡ Π΄Π°ΠΆΠ΅ ΡΡΠ΅Π΄ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΊΠΈΡ
Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ - ΡΡΠΎ
all().
Π€ΡΠ½ΠΊΡΠΈΡ all() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ True, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΡΡΠΈΠ½Π½ΡΠ΅ (ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΡΡΡΠΎΠΉ).
Π ΠΏΡΠΈΠΌΠ΅ΡΡ, all() ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠ²Π»ΡΡΡΡΡ Π»ΠΈ Π²ΡΠ΅ ΠΎΠΊΡΠ΅ΡΡ Π² IP-Π°Π΄ΡΠ΅ΡΠ΅ ΡΠΈΡΠ»Π°ΠΌΠΈ:
>>> all(i.isdigit() for i in '127.0.0.b'.split('.'))
False
>>> all(i.isdigit() for i in '127.0.0.1'.split('.'))
TrueΠ’ΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ
ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ.
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΎΡΠΎΠ² ΡΠΊΠ°Π·Π°Π», ΡΡΠΎ
namedtuple() ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ ΠΈ Π² 3.10 Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡΡ. Π§ΡΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°ΡΡ? ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ NamedTuple, Π΅ΡΠ»ΠΈ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΏΠΈΡΠΎΠ½ Π²ΡΡΠ΅ Π²Π΅ΡΡΠΈΠΈ 3.6.
ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΡΡΠ΅ΠΆ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ 2 ΠΏΡΡΡΠΌΠΈ - ΡΠ΅ΡΠ΅Π· Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ NamedTuple (ΠΊΠ»Π°ΡΡ Skills) ΠΈΠ»ΠΈ ΡΡΠ°ΡΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ (AnotherSkills). ΠΠ±Π° ΡΠΏΠΎΡΠΎΠ±Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ², ΠΏΠΎΠ²ΡΡΠ°ΡΡΠΈΠ΅ (ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ) ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π°.
ΠΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ Π² namedtuple (_make(), _replace(), _asdict()) ΡΠ°Π±ΠΎΡΠ°ΡΡ:
>>> s = Skills(0)
>>> s._asdict()
{'mining': 0, 'excavating': 1}
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ:
s.__annotations__
{'mining': <class 'int'>, 'excavating': <class 'int'>}
Π’Π°ΠΊ ΠΆΠ΅, Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ»ΠΈ ΠΎΠ²Π΅ΡΡΠ°ΠΉΡΠΈΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ Skills ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ str():
>>>str(s)
'ΠΠ°ΠΊΠΎΠΉ ΠΊΠ°ΡΠΎΠΊ, ΡΡΠΎΠ²Π΅Π½Ρ ΠΊΠΎΠΏΠ°Π½ΠΈΡ: 0\nΡΡΠΎΠ²Π΅Π½Ρ Π»Π΅ΡΠΎΡΡΠ±ΡΡΠ²Π°: 100'
GitHubΠ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ
ΡΠΏΡΠΎΡΠΈΠ»ΠΈ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°ΠΊ ΠΏΡΠΈΠ½ΡΡΠΎ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° (ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ). ΠΡΠ²Π΅Ρ ΠΏΡΠΎΡΡ - ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ
Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
ΡΡ ΡΠΎ Π·Π½Π°ΠΊΠ° ΠΏΠΎΠ΄ΡΡΡΠΊΠΈΠ²Π°Π½ΠΈΡ Π·Π΄Π΅ΡΡ ΠΈΠΌΠ΅Π΅Ρ Π΄ΡΡΠ³ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ΅ΡΠΎΠ΄Ρ Ρ Π½ΠΈΠΆΠ½ΠΈΠΌ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΡΡΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ, Π° ΠΏΡΠΎΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Ρ ΠΎΠ½ΠΈ ΡΠ°ΠΊ ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΠΈΠΌΡΠ½ Ρ ΠΏΠΎΠ»ΡΠΌΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ°.
Π ΠΌΡ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ Π½Π°ΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ.
ΠΠ΅ΡΠΎΠ΄
_asdict() ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΈ Π²Π΅ΡΠ½Π΅Ρ Π΅Π³ΠΎ:
>>> skills._asdict()
{'Mining': 1, 'Excavating': 2, 'Boiling': 3}
ΠΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ - _fields(). ΠΠ½ Π²Π΅ΡΠ½Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΆ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ. ΠΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΡΡΠ΅ΠΆ:
>>> AllSkills = namedtuple('AllSkills', Skills._fields + ('Taming', 'Woodcutting'))
>>> AllSkills._fields
('Mining', 'Excavating', 'Boiling', 'Taming', 'Woodcutting')Π ΠΊΠ°Π½Π°Π»Π΅ Π½Π΅Π΄Π°Π²Π½ΠΎ ΡΠΆΠ΅ Π±ΡΠ» ΠΏΠΎΡΡ ΠΏΡΠΎ namedtuple, Π½ΠΎ ΠΌΠ½Π΅ Π΅ΡΡ Π΅ΡΡΡ ΡΡΠΎ ΠΏΡΠΎ Π½Π΅Π³ΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ.
ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ Ρ Ρ
ΠΎΡΠ΅Π» Π±Ρ Π²Π°ΠΌ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ - ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΡΡΠ΅ΠΆ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΡΠ±ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅:
>>> lst = ['Mining', 'Excavating', 'Boiling']
>>> Skills = namedtuple('Skills', lst)
>>> skills = Skills(1, 2, 3)
>>> skills
Skills(Mining=1, Excavating=2, Boiling=3)
ΠΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΡΡΠ΅ΠΆ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄ _make():
>>> skills = Skills._make([1, 2, 3]) Skills(Mining=1, Excavating=2, Boiling=3)Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ, Π½ΠΎ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ Ρ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΌ, ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΈ Π΄Π°ΠΆΠ΅ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΌ (Π½ΠΎ Π²ΠΎΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π΄Π»Ρ ΠΊΠ»ΡΡΠ° ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ). ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅, Π½ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄
_replace(), ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅. ΠΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ _make Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΡΡΠ΅ΠΆΠ°, ΠΏΠΎΡΡΠΎΠΌΡ, ΠΏΠΎ ΡΡΡΠΈ, ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠΎΡΡΠ΅ΠΆ:
>>> skills._replace(Mining=100) Skills(Mining=100, Excavating=2, Boiling=3)
