Библиотека питониста | Python, Django, Flask
40.5K subscribers
2.77K photos
75 videos
51 files
4.35K links
Все самое полезное для питониста в одном канале.

Список наших каналов: https://t.me/proglibrary/9197

Курс по ML: https://cl

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
👏 Вышел Mypy 1.8 — новая версия статического анализатора типов для Python

В Mypy 1.8 добавлены некоторые новые функции, улучшена производительность и исправлены баги.

Вот что было улучшено:
🔸 сообщения об ошибках для super проверок, добавлено больше тестов.
🔸 проверки типов: изменения в обработке isinstance, дополнительные условия для @final и TypedDict.
🔸 Stubtest: лучшая обработка нестандартных значений по умолчанию, поддержка декоратора @type_check_only.

🧑‍💻Прочесть обо всех изменениях можно здесь
👍12
🤓 Нашли репозиторий с большим количеством шпаргалок по Python на русском языке

Есть PDF-ки по:
▫️типам данных;
▫️функциям;
▫️декораторам;
▫️итераторам и генераторам;
▫️различным модулям;
▫️ООП и многому другому.

🔗Изучить можно по этой ссылке
24🔥9👍4
🥚🐔 Что было раньше — курица или яйцо: у Python есть свой ответ на этот вопрос
#memes
😁82🤔2
🐍 Что делает класс ChainMap() модуля collections

Он позволяет объединять несколько словарей так, чтобы их можно было рассматривать как единое целое.

✏️Лучше всего посмотреть на примере:
d1 = dict(a=1, b=3)
d2 = dict(a=2, b=4, c=6)

from collections import ChainMap

chain = ChainMap(d1, d2)
print(chain['a']) # -> 1
print(chain['c']) # -> 6

Экземпляр ChainMap не копирует входные словари, а хранит ссылки на них. Поэтому он может быть более эффективным по памяти по сравнению с другими методами, которые создают копии словарей.

✏️Обновление или вставка в ChainMap затрагивают только первый входной словарь. Снова посмотрим на примере:
chain['c'] = -1
print(d1) # -> {'a': 1, 'b': 3, 'c': -1}
print(d2) # -> {'a': 2, 'b': 4, 'c': 6}

#код
👍232
🪜 8 уровней использования конструкции match/case в Python

Начиная с Python 3.10 в языке есть структурное сопоставление с шаблоном (structural pattern matching). В новой статье на Medium приводится восемь примеров использования сопутствующей конструкции match/case: от элементарного до продвинутого.

☑️ Простое сопоставление шаблонным строкам
Например, можно избежать многократного использования условных конструкций:
def handle_http_status(status_code):
match status_code:
case 200:
return "Success!"
case 400:
return "Bad Request"

print(handle_http_status(200)) # -> Success!

☑️ Использование подчёркивания для остальных случаев
def handle_http_status(status_code):
match status_code:
case 200:
return "Success!"
case 400:
return "Bad Request"
case _:
return "Unknown Status"

☑️ Комбинирование нескольких паттернов в один случай
Приведённый выше пример можно усложнить:
def handle_http_status(status_code):
match status_code:
case 200:
return "Success!"
case 400 | 401 | 403 | 404:
return "Client Error"

print(handle_http_status(404)) # -> Client Error

☑️ Использование оператора as, чтобы улучшить логирование
def handle_http_status(status_code):
match status_code:
case 200:
return "Success!"
case 400 | 401 | 403 | 404 as Err:
return f"Client Error:{Err}"

print(handle_http_status(404)) # -> Client Error:404

☑️ Cопоставление шаблонным кортежам и спискам
def execute_command(command):
match command:
case ("print", message):
print(f"{message}")
case ["save", filename, data]:
print(f"Saving {data} to {filename}")
case ("delete", filename):
print(f"Deleting {filename}")
case ('todo', *something):
print(f"To do: {' '.join(something)}")
case _:
print("Unknown Command")


execute_command(("print", "Hello, Yang Zhou!")) # -> Hello, Yang Zhou!

☑️ Сопоставление шаблонным словарям
def handle_user_action(action):
match action:
case {"type": "login", "username": user, "password": pw}:
return f"Login attempt by {user} with password {pw}"
case {"type": "logout", "username": user}:
return f"User {user} logged out"
case {"type": "signup", "username": user, "email": email}:
return f"New signup by {user} with email {email}"
case _:
return "Unknown action"


print(handle_user_action({"type": "login", "username": "Yang Zhou", "password": "123456"})) # -> Login attempt by Yang Zhou with password 123456

☑️ Использование дополнительных условий
def handle_user_op(action):
match action:
case "login" if user_not_logged_in():
return "User needs to log in"
case "login":
return "Already logged in"
case "logout":
return "Logging out"
case _:
return "Unknown action"

☑️ Сопоставление шаблонным классам
class Circle:
def __init__(self, radius):
self.radius = radius

class Rectangle:
def __init__(self, length, width):
self.length = length
self.width = width

def process_shape(shape):
match shape:
case Circle(radius=r):
return f"Processing a circle with radius {r}"
case Rectangle(length=l, width=w):
return f"Processing a rectangle with length {l} and width {w}"


🔗Прочитать оригинал статьи можно по этой ссылке
👍504
🔍Насколько легко «войти в айти»?

Мы продолжаем собирать ваши истории о смене профессии и трудоустройстве в IT, чтобы написать большую аналитическую статью.

👉Если вы еще не рассказывали о своем опыте, пройдите короткий опрос по ссылке.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁11
🐍🧫 Создаём игру «Жизнь» Джона Конвея на Python

Напишем алгоритм эволюции клеточных автоматов и разработаем интерфейс командной строки (CLI) для взаимодействия с игрой.

👉Читать статью
👍17😁2
🐍 У нас есть еженедельная email-рассылка, посвященная последним открытиям и тенденциям в мире Python.

В ней:
● Новые возможности в последних версиях Python
● Работа с базами данных и SQL в Python
● Веб-разработка на Django и Flask
● Машинное обучение и анализ данных с помощью Python
● Автоматизация и работа с API на Python
● Тестирование и отладка кода на Python
● Задачи для новичков с решениями

👉Подписаться👈
❤‍🔥4👍2
p1i8awsivji51.jpeg
580.7 KB
✍️Небольшая шпаргалка по дебаггингу в Python

Вот алгоритм действий при ситуации, когда код не работает:

Начните с вопроса: появляется ли ошибка при запуске скрипта?

✔️ Если да:
Посмотрите на тип ошибки. Вот основные:
🔤AttributeError — возникает, когда вы пытаетесь вызвать метод не на том объекте;
🔤SyntaxError — вы где-то ошиблись с синтаксисом;
🔤NameError — используете имя, которое пока не определено;
🔤TypeError — пытаетесь делать что-то с неподходящим по типу объектом;
🔤IOErro — пытаетесь открыть файл, который не существует;
🔤IndentationError — ошибка отступа;
🔤KeyError — пытаетесь обратиться по ключу, которого нет в словаре.

✖️Если нет:
Посмотрите, есть ли в коде циклы (петли) или условные выражения (if). Исходя из ответа на этот вопрос, проводите дальнейший анализ.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍172
🐍 Подборка инструментов для самостоятельного парсинга веб-страниц на Python

Requests
Конечно же, нельзя не упомянуть эту библиотеку для выполнения HTTP-запросов. Сама по себе она не является инструментом для парсинга, но часто используется в сочетании с Beautiful Soup.
Beautiful Soup
Библиотека предназначена для извлечения данных из веб-страниц. Она использует анализатор кода HTML и XML и даёт доступ к данным.
Scrapy
Фреймворк для автоматического сбора структурированных данных из веб-страниц. В нём есть всё, что нужно, в том числе модуль для отправки HTTP-запросов и извлечения данных из HTML-страницы.
PySpider
Ещё один фреймворк для веб-парсинга.
Selenium
Инструмент автоматизации браузера. Позволяет написать программу, которая будет как человек открывать нужные веб-страницы и взаимодействовать с ними.
Регулярные выражения, re
Также отметим, что регулярки могут пригодиться для поиска определённых шаблонов в тексте на сайте.

👇А какими полезными инструментами пользуетесь вы?
👍137
💬 Чему бы вы хотели научиться?

Поделитесь мыслями в комментариях👇

#интерактив
5
🧠🧩 Зачем айтишнику психолог?

В современных реалиях все больше специалистов ИТ-индустрии обращаются к психологам, чтобы разобраться с эмоциональными проблемами. Рассмотрим некоторые распространенные запросы и проблемы, с которыми сталкиваются айтишники.

🔗 Читать статью
🔗 Зеркало
7🔥4😁1
🔠 Юникод в Python: основы

В Python 3 строки — это неизменяемая последовательность Unicode-символов. В Unicode каждый уникальный символ (буква, цифра и т.д.) имеет собственный идентификатор, известный как кодовая точка (code point).

️Кодовая точка — число от 0 до 1 114 111. В стандарте Unicode оно обычно представлено в шестнадцатеричном формате, начиная с «U+». Например, U+0041 — это кодовая точка для буквы «A», U+20AC — для символа евро (€).
️Эти кодовые точки преобразуются в последовательности байтов с помощью кодировки. Одна из самых распространённых схем тут — UTF-8. Посмотрим в коде:
s = 'café'
b = s.encode('utf8')
print(b) # -> b'caf\xc3\xa9'
print(b.decode('utf8')) # -> café


str.encode() возвращает объект типа bytes. Литералы этого типа объектов и его отображение допускают только символы ASCII. Поэтому при вызове encode() у строки s ASCII-совместимое "caf" отображается как есть, а "é" как "\xc3\xa9" (здесь, по сути, два символа).

ASCII — это одна из самых ранних кодировок. Она включает в себя 128 символов (с кодами от 0 до 127), которые охватывают английские буквы в верхнем и нижнем регистре, цифры, знаки препинания и управляющие символы (например, перевод строки). В UTF-8 первые 128 символов соответствуют символам ASCII.
Please open Telegram to view this post
VIEW IN TELEGRAM
20👍9
🐍 Реальный Python: грустные факты, которые вас разочаруют

Пост-пародия от имени разработчицы, которая писала на Python полтора года. Она выбрала язык из-за максимально лояльной динамической типизации, простого обучения (относительно Go) и красивых отступов.

Вот главные претензии разработчицы:
▪️Массовый наплыв промпт-инженеров привёл к падению зарплат.
▪️Найти действительно качественный проект на Python очень трудно. Any повсюду; смущают pyproject.toml, бабушкин sqlite; старый код в ужасном состоянии; картонные новостройки (привет, FastAPI); Гвидо ван Россум может в любое время суток залезть в проект.
▪️Менталитет сообщества. Жалуется на отсутствие дисциплины.

Пост, конечно, юмористический, но в шутках может быть и доля правды😢
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
😺🐙 Как разобраться в Git: краткая инструкция для джунов

Расскажем, как Git хранит данные, отслеживает изменения и позволяет разработчикам управлять историей коммитов.
👍10