en
Feedback

Don't get caught by a cheater! Telemetrio finds and tags such channels πŸ‘‰ If you want to see the tag, subscribe

ΠšΠΎΡ€ΠΎΠ±ΠΊΠ° с ΠΏΠΈΡ‚ΠΎΠ½ΠΎΠΌ

ΠšΠΎΡ€ΠΎΠ±ΠΊΠ° с ΠΏΠΈΡ‚ΠΎΠ½ΠΎΠΌ

Open in Telegram

Π—Π°ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΎΡ‚ Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°: сниппСты, ΠΎΠ±Π·ΠΎΡ€Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², новости ΠΈ другая полСзная информация. Автор: @kiriharu

Show more
462
Subscribers
-124 hours
No data7 days
-530 days
Posts Archive
ΠšΡΡ‚Π°Ρ‚ΠΈ ΠΏΡ€ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ‚Π°ΠΌ tablib! Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ полСзная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, которая позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ "Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Π΅ датасСты" с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ
ΠšΡΡ‚Π°Ρ‚ΠΈ ΠΏΡ€ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ‚Π°ΠΌ 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. #ссылочки

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹ΠΏΠΈΠ»ΠΈΡ‚ΡŒ 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/ #gil

aiomisc - ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ для asyncio. Из самых ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ для сСбя Π²Ρ‹Π΄Π΅Π»ΠΈΠ» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ э
aiomisc - ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ для asyncio. Из самых ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ для сСбя Π²Ρ‹Π΄Π΅Π»ΠΈΠ» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ энтрипоинты с Π»ΠΎΠ³Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство классов-сСрвисов (PeriodicService, CronService ΠΈ Ρ‚.Π΄.), Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сигналами. GitHub | ДокумСнтация #Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° #asyncio

Π ΡƒΡ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ ΠΏΠΎ списку Π—Π°Π΄Π°Ρ‡ΠΊΠ°: Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΏΠΎ списку Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» for. РСшСниС Ρƒ этой Π·Π°Π΄Π°Ρ‡ΠΈ достаточно простоС - ΠΌΠΎΠΆ
Π ΡƒΡ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ ΠΏΠΎ списку Π—Π°Π΄Π°Ρ‡ΠΊΠ°: Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΏΠΎ списку Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» for. РСшСниС Ρƒ этой Π·Π°Π΄Π°Ρ‡ΠΈ достаточно простоС - ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ next() ΠΈ Π»ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ StopIteration. На ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с использованиСм Ρ†ΠΈΠΊΠ»Π° while. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ - это Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΡŽ ΠΏΠΎ коллСкциям. Π”Π°Π»ΡŒΡˆΠ΅ Π² Ρ†ΠΈΠΊΠ»Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ next(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт ΠΈ Ρ‚Π°ΠΊ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° элСмСнты Π½Π΅ закончатся - ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ этого Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ² ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ StopIteration.

ΠšΠΎΡΡ‚Ρ‹Π»Π΅Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ вСлосипСдостроСниС продолТаСтся πŸ—Ώ! Π”Π΅Π»Π°ΡŽ Π±ΠΎΡ‚Π° Π² Ρ‚Π΅Π»Π΅Π³Π΅, Ρ€Π΅ΡˆΠΈΠ» ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Github Actions ΠΏΡ€ΠΎΠ³ΠΎΠ½ΡΡ‚ΡŒ тСсты Π² Π΄
ΠšΠΎΡΡ‚Ρ‹Π»Π΅Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ вСлосипСдостроСниС продолТаСтся πŸ—Ώ! Π”Π΅Π»Π°ΡŽ Π±ΠΎΡ‚Π° Π² Ρ‚Π΅Π»Π΅Π³Π΅, Ρ€Π΅ΡˆΠΈΠ» ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ 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 Π² Docker - зависимости ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ requirements.txt, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ избСгая установки ΠΈ обновлСния poetry. Если Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ просто ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ зависимости - экспортируйтС ΠΈΡ… Π² requirements.txt. А дальшС ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Ρ‡Π΅Ρ€Π΅Π· pip. #poetry #docker

Поиск N ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ список ΠΈΠ· N ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов, ΠΌΠΎ
Поиск 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. Π£ΠΌΠ΅Π΅Ρ‚ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ· datac
orjson - самая быстрая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для (Π΄Π΅)сСриализации json, написанная Π½Π° Rust. Π£ΠΌΠ΅Π΅Ρ‚ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ· dataclass, datetime, numpy ΠΈ UUID. Π˜ΠΌΠ΅Π΅Ρ‚ мноТСство ΠΎΠΏΡ†ΠΈΠΉ для Ρ‚ΠΎΠ½ΠΊΠΎΠΉ настройки парсСра, содСрТит Π²Π΅Ρ‰ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π² парсСрС стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π˜ΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ соотвСтствиС UTF-8 ΠΈ JSON Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ. PyPi | GitHub | Π‘Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ #Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°

Π£ΠΆΠ΅ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ ΠΎ ΠΏΠ°Ρ€Π½Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запустил Ρ‡Π΅Π»Π»Π΅Π½Π΄ΠΆ Π£Ρ‡Ρƒ Python с нуля? Π’ своСм ΠΊΠ°Π½Π°Π»Π΅ ΠΎΠ½ дСлится с подписчиками ΠΎΡ‚Ρ‡Π΅Ρ‚Π°ΠΌΠΈ ΠΎ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½
Π£ΠΆΠ΅ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ ΠΎ ΠΏΠ°Ρ€Π½Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запустил Ρ‡Π΅Π»Π»Π΅Π½Π΄ΠΆ Π£Ρ‡Ρƒ Python с нуля? Π’ своСм ΠΊΠ°Π½Π°Π»Π΅ ΠΎΠ½ дСлится с подписчиками ΠΎΡ‚Ρ‡Π΅Ρ‚Π°ΠΌΠΈ ΠΎ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π½ΠΎΠΌ, Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ Π·Π°Π΄Π°Ρ‡ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌΠΈ. Π£ΠΆΠ΅ "Π·Π°ΠΊΡ€Ρ‹Π»" основы ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, классами ΠΈ ΠΈΠ΄Π΅Ρ‚ дальшС! ЦСль, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ сСбС поставил - свой Π±Π»ΠΎΠ³ Π½Π° Django Π΄ΠΎ Нового Π³ΠΎΠ΄Π°, Π° глобально - Π² 2ΠΊ22 ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ„Ρ„Π΅Ρ€ Π½Π° вакансию Π΄ΠΆΡƒΠ½ΠΈΠΎΡ€Π°. И, кстати, Π΅ΠΌΡƒ 33 Π³ΠΎΠ΄Π°, Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠ·Π΄Π½ΠΎ! БСйчас Π΅Π³ΠΎ ΠΊΠ°Π½Π°Π» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ Python, начиная с основ! Π•ΡΡ‚ΡŒ ΠΈ тСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, ΡƒΡ‡ΠΈ ΠΏΠ°ΠΉΡ‚ΠΎΠ½ прямо Π² Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ! Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Π½Π΅Ρ‚ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Π½Π΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° этого парня, Π½Π΅ смотря Π½ΠΈ Π½Π° Ρ‡Ρ‚ΠΎ ΠΎΠ½ двиТСтся ΠΊ своСй Ρ†Π΅Π»ΠΈ, Π·Π° этим интСрСсно ΠΏΠΎΠ½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ! ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° Π΅Π³ΠΎ ΠΊΠ°Π½Π°Π» @pywayru ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΡ‚Π΅ своСй подпиской!

ΠŸΡ€ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ all() Бтандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python ΠΏΠΎΠ»Π½Π° ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ, Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ Π΅ΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ срСди встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
ΠŸΡ€ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ 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.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, Π½ΠΎ ΠΌΠ½Π΅ Π΅Ρ‰Ρ‘ Π΅ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎ Π½Π΅Π³ΠΎ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ. ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ Π²Π°ΠΌ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ -
Π’ ΠΊΠ°Π½Π°Π»Π΅ Π½Π΅Π΄Π°Π²Π½ΠΎ ΡƒΠΆΠ΅ Π±Ρ‹Π» пост ΠΏΡ€ΠΎ 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)

ΠšΠΎΡ€ΠΎΠ±ΠΊΠ° с ΠΏΠΈΡ‚ΠΎΠ½ΠΎΠΌ - Statistics & analytics of Telegram channel @boxwithpython