Forwarded from Библиотека Python разработчика | Книги по питону
Чтобы отсортировать последовательность в Python, используйте
С помощью аргумента
Допустим, нам также нужно, чтобы числа с одинаковым абсолютным значением были расположены в порядке возрастания. В этом случае можно передать кортеж в качестве ключа сравнения:
Это не магия сортировки, а стандартное поведение кортежей в Python:
👉@BookPython
sorted
:
In : sorted([1, -1, 2, -3, 3])
Out: [-3, -1, 1, 2, 3]
С помощью аргумента
key
можно передать функцию, которая будет использоваться для получения ключа сравнения для каждого значения. Например, отсортируем ту же последовательность по абсолютным значениям:
In : sorted([1, -1, 2, -3, 3], key=abs)
Out: [1, -1, 2, -3, 3]
Допустим, нам также нужно, чтобы числа с одинаковым абсолютным значением были расположены в порядке возрастания. В этом случае можно передать кортеж в качестве ключа сравнения:
In : sorted([1, -1, 2, -3, 3], key=lambda x: (abs(x), x))
Out: [-1, 1, 2, -3, 3]
Это не магия сортировки, а стандартное поведение кортежей в Python:
In : (1, 2) == (1, 2)
Out: True
In : (1, 2) > (1, 1)
Out: True
In : (1, 2) < (2, 1)
Out: True
👉@BookPython
Какой порт по умолчанию использует Django runserver?
Anonymous Quiz
100%
8000
0%
8080
0%
8888
0%
404
Какое поле модели вы бы использовали в Django для хранения неограниченных текстовых данных?
Anonymous Quiz
33%
CharField
0%
BinaryField
67%
TextField
0%
LongOrEvenInfiniteTextField
Forwarded from Zen of Python
VSCode vs. PyCharm
Переход с первой на вторую IDE стоит совершать, по мнению админа, не в первый год разработки, а когда наступает некое плато в развитии навыка кодить. В этот момент стать лучшей версией себя поможет именно PyCharm: хоть ворнингов с подчеркнутыми словами станет больше, зато узкопрофильность шаг за шагом позволит стать вашему проекту более «ухоженным» и читаемым.
Для сомневающихся — скурпулезный разбор различий между двумя популярными питоническими IDE от фулстэк-разработчика, на русском языке и длиной в 32 минуты.
Смотреть на замедленотьюбе
#факт
@zen_of_python
Переход с первой на вторую IDE стоит совершать, по мнению админа, не в первый год разработки, а когда наступает некое плато в развитии навыка кодить. В этот момент стать лучшей версией себя поможет именно PyCharm: хоть ворнингов с подчеркнутыми словами станет больше, зато узкопрофильность шаг за шагом позволит стать вашему проекту более «ухоженным» и читаемым.
Для сомневающихся — скурпулезный разбор различий между двумя популярными питоническими IDE от фулстэк-разработчика, на русском языке и длиной в 32 минуты.
Смотреть на замедленотьюбе
#факт
@zen_of_python
Forwarded from Zen of Python
Python 3.14 станет быстрее на 30% без изменений в существующем коде
Произойдет ускорение за счет оптимизации C-компилятора, что выполняет байт-код. Это затронет версии языка 3.14 и выше (уже можно скачать с официального сайта).
Подробнее
@zen_of_python
Произойдет ускорение за счет оптимизации C-компилятора, что выполняет байт-код. Это затронет версии языка 3.14 и выше (уже можно скачать с официального сайта).
Подробнее
@zen_of_python
Forwarded from Библиотека Python разработчика | Книги по питону
10 полезных библиотек для Python-разработчика
Сегодня я подготовил для вас подборку из 10 полезных библиотек, которые могут сделать вашу разработку проще и эффективнее. Поехали! 🚀
1️⃣ Rich – красивый вывод в консоль. Если хотите раскрасить логи, добавить таблицы или анимации – эта библиотека вам пригодится.
📌
2️⃣ Typer – современный способ писать CLI-приложения. Работает на основе аннотаций типов и делает разработку CLI удобнее.
📌
3️⃣ Pendulum – альтернатива
📌
4️⃣ HTTPX – асинхронный клиент для работы с HTTP-запросами. Поддерживает
📌
5️⃣ Pydantic – мощный инструмент для валидации данных и работы с моделями. Особенно полезен в FastAPI.
📌
6️⃣ Poetry – современный менеджер зависимостей. Упрощает работу с виртуальными окружениями и пакетами.
📌
7️⃣ Loguru – удобная альтернатива стандартному
📌
8️⃣ FastAPI – один из самых быстрых Python-фреймворков для создания API. Использует аннотации типов и
📌
9️⃣ Tqdm – библиотека для удобных progress-bar'ов в терминале. Незаменима при обработке больших данных.
📌
🔟 Black – автоматический форматтер кода, который придерживается строгого стиля. Просто устанавливаешь – и больше не думаешь о стиле кода.
📌
Какую из этих библиотек вы уже используете? А может, есть другие любимые инструменты? Делитесь в комментариях! 🔥
👉@BookPython
Сегодня я подготовил для вас подборку из 10 полезных библиотек, которые могут сделать вашу разработку проще и эффективнее. Поехали! 🚀
1️⃣ Rich – красивый вывод в консоль. Если хотите раскрасить логи, добавить таблицы или анимации – эта библиотека вам пригодится.
📌
pip install rich
2️⃣ Typer – современный способ писать CLI-приложения. Работает на основе аннотаций типов и делает разработку CLI удобнее.
📌
pip install typer
3️⃣ Pendulum – альтернатива
datetime
, но с удобным API и встроенной поддержкой часовых поясов. 📌
pip install pendulum
4️⃣ HTTPX – асинхронный клиент для работы с HTTP-запросами. Поддерживает
async/await
, в отличие от requests
. 📌
pip install httpx
5️⃣ Pydantic – мощный инструмент для валидации данных и работы с моделями. Особенно полезен в FastAPI.
📌
pip install pydantic
6️⃣ Poetry – современный менеджер зависимостей. Упрощает работу с виртуальными окружениями и пакетами.
📌
pip install poetry
7️⃣ Loguru – удобная альтернатива стандартному
logging
. Позволяет логировать без лишнего кода. 📌
pip install loguru
8️⃣ FastAPI – один из самых быстрых Python-фреймворков для создания API. Использует аннотации типов и
async/await
. 📌
pip install fastapi
9️⃣ Tqdm – библиотека для удобных progress-bar'ов в терминале. Незаменима при обработке больших данных.
📌
pip install tqdm
🔟 Black – автоматический форматтер кода, который придерживается строгого стиля. Просто устанавливаешь – и больше не думаешь о стиле кода.
📌
pip install black
Какую из этих библиотек вы уже используете? А может, есть другие любимые инструменты? Делитесь в комментариях! 🔥
👉@BookPython
Forwarded from Библиотека Python разработчика | Книги по питону
🚀 5 крутых Python-фишек, о которых знают не все
Python — мощный и удобный язык, но даже опытные разработчики иногда не знают всех его возможностей. Сегодня я покажу пять полезных трюков, которые могут упростить вашу работу.
1. Используем
Многие не знают, что в Python циклы
✅ Пример:
🔹 Если в списке нет чётных чисел, сработает
2. "Распаковка" переменных
В Python можно присваивать сразу несколько значений одной строкой.
✅ Пример:
Можно менять местами значения без временной переменной:
3. Используем
Чтобы числа легче читались, можно разделять разряды
✅ Пример:
Это просто синтаксический сахар, Python игнорирует
4. Получаем значение из словаря с запасным вариантом
Вместо
✅ Пример:
5. "Распаковка" списка в аргументы функции
Оператор
✅ Пример:
То же работает со словарями через
🧐 Итог
Эти фишки делают код лаконичнее и понятнее. Какую из них вы уже использовали? Может, знаете ещё что-то крутое? Делитесь в комментариях! 👇
👉@BookPython
Python — мощный и удобный язык, но даже опытные разработчики иногда не знают всех его возможностей. Сегодня я покажу пять полезных трюков, которые могут упростить вашу работу.
1. Используем
else
в for
и while
Многие не знают, что в Python циклы
for
и while
могут иметь блок else
. Он выполняется, если цикл не был прерван через break
. ✅ Пример:
numbers = [1, 3, 5, 7]
for num in numbers:
if num % 2 == 0:
print("Есть чётное число!")
break
else:
print("Чётных чисел нет.")
🔹 Если в списке нет чётных чисел, сработает
else
.2. "Распаковка" переменных
В Python можно присваивать сразу несколько значений одной строкой.
✅ Пример:
a, b, c = 1, 2, 3
print(a, b, c) # 1 2 3
Можно менять местами значения без временной переменной:
x, y = 5, 10
x, y = y, x
print(x, y) # 10 5
3. Используем
_
в больших числах Чтобы числа легче читались, можно разделять разряды
_
. ✅ Пример:
big_number = 1_000_000_000
print(big_number) # 1000000000
Это просто синтаксический сахар, Python игнорирует
_
при вычислениях.4. Получаем значение из словаря с запасным вариантом
Вместо
if key in dict
можно использовать .get()
, чтобы избежать KeyError
. ✅ Пример:
user_data = {"name": "Alice"}
age = user_data.get("age", 18) # Если ключа "age" нет, вернётся 18
print(age) # 18
5. "Распаковка" списка в аргументы функции
Оператор
*
позволяет передавать элементы списка в функцию как отдельные аргументы. ✅ Пример:
def greet(name, age):
print(f"Привет, {name}! Тебе {age} лет.")
user_info = ["Иван", 25]
greet(*user_info) # Привет, Иван! Тебе 25 лет.
То же работает со словарями через
**
:
user_dict = {"name": "Ольга", "age": 30}
greet(**user_dict)
🧐 Итог
Эти фишки делают код лаконичнее и понятнее. Какую из них вы уже использовали? Может, знаете ещё что-то крутое? Делитесь в комментариях! 👇
👉@BookPython
Forwarded from Хабр
Планировщик Go: самый подробный гайд простым языком
Давайте спроектируем с нуля планировщик Go — начнём с самой простой и понятной наивной реализации, а затем шаг за шагом будем разбираться, какие изъяны в ней есть, и придумывать как их решать, постепенно усложняя общую модель.
Это один из лучших способов понять сложную систему или концепцию — пройти путь её поэтапного проектирования. Система сложна, осознать её очень непросто, но мы разобьём её на простые шаги, понять которые очень легко. После этого пазл сам собой сложится в голове, и общая картина системы будет для вас такой же простой и очевидной.
Давайте спроектируем с нуля планировщик Go — начнём с самой простой и понятной наивной реализации, а затем шаг за шагом будем разбираться, какие изъяны в ней есть, и придумывать как их решать, постепенно усложняя общую модель.
Это один из лучших способов понять сложную систему или концепцию — пройти путь её поэтапного проектирования. Система сложна, осознать её очень непросто, но мы разобьём её на простые шаги, понять которые очень легко. После этого пазл сам собой сложится в голове, и общая картина системы будет для вас такой же простой и очевидной.
Forwarded from Zen of Python
@classmethod vs. @staticmethod
Если вы только повстречались с этой парочкой и с трудом понимаете документацию, вот 7-минутное видео на русском, поясняющее их суть и разницу на наглядном примере.
Смотреть на замедленотьюбе
#основы
@zen_of_python
Если вы только повстречались с этой парочкой и с трудом понимаете документацию, вот 7-минутное видео на русском, поясняющее их суть и разницу на наглядном примере.
Смотреть на замедленотьюбе
#основы
@zen_of_python
Forwarded from Бэкдор
This media is not supported in your browser
VIEW IN TELEGRAM
Убийца Cursor ВЫШЕЛ: представлен Devin 2.0 — и пока он кажется реальной имбой для кодеров. Все новинки свежей версии:
• Теперь можно запускать НЕСКОЛЬКО агентов одновременно — каждый будет работать параллельно над своей задачей
• Созданные агентами продукты можно тут же полноценно тестировать в локальном браузере — и править их с помощью ИИ
• Перед запуском агент выдаст вам чёткий план того, что он собирается делать — и поможет докрутить ТЗ в соответствии с вашими хотелками
• Режимы Search и Deep Mode помогут найти любые ответы в кодовой базе
• Devin 2.0 создает подробнейшую ДОКУМЕНТАЦИЮ ко всему, что делает — со ссылками и схемами.
Забираем нового помощника здесь.
👍 Бэкдор
• Теперь можно запускать НЕСКОЛЬКО агентов одновременно — каждый будет работать параллельно над своей задачей
• Созданные агентами продукты можно тут же полноценно тестировать в локальном браузере — и править их с помощью ИИ
• Перед запуском агент выдаст вам чёткий план того, что он собирается делать — и поможет докрутить ТЗ в соответствии с вашими хотелками
• Режимы Search и Deep Mode помогут найти любые ответы в кодовой базе
• Devin 2.0 создает подробнейшую ДОКУМЕНТАЦИЮ ко всему, что делает — со ссылками и схемами.
Забираем нового помощника здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
1) Передача по ссылке
Переменные в Python не хранят значения, а указывают на объекты в памяти
x = y = [] создаёт один список с двумя именами, изменения видны через оба имени
Решение: инициализировать каждую переменную отдельно (x = [], y = [])
2) Атрибуты класса
Атрибуты, определённые на уровне класса, создаются один раз и используются всеми экземплярами
class Pizza: toppings = [] — общий список для всех объектов класса
Решение: инициализировать атрибуты в init для каждого экземпляра отдельно
3) Параметры функций по умолчанию
Значения по умолчанию вычисляются один раз при определении функции
def add_topping(item, toppings=[]) использует один и тот же список для всех вызовов
Решение: использовать None и проверку (def add_topping(item, toppings=None): if toppings is None: toppings = [])
Подробнее и с примерами в этой статье
https://olegtalks.ru/tpost/743nkm5u11-vsyo-chto-nuzhno-znat-o-neproizvolnih-bo
Переменные в Python не хранят значения, а указывают на объекты в памяти
x = y = [] создаёт один список с двумя именами, изменения видны через оба имени
Решение: инициализировать каждую переменную отдельно (x = [], y = [])
2) Атрибуты класса
Атрибуты, определённые на уровне класса, создаются один раз и используются всеми экземплярами
class Pizza: toppings = [] — общий список для всех объектов класса
Решение: инициализировать атрибуты в init для каждого экземпляра отдельно
3) Параметры функций по умолчанию
Значения по умолчанию вычисляются один раз при определении функции
def add_topping(item, toppings=[]) использует один и тот же список для всех вызовов
Решение: использовать None и проверку (def add_topping(item, toppings=None): if toppings is None: toppings = [])
Подробнее и с примерами в этой статье
https://olegtalks.ru/tpost/743nkm5u11-vsyo-chto-nuzhno-znat-o-neproizvolnih-bo
olegtalks.ru
Всё, что нужно знать о непроизвольных боргах в Python
В Python, в общем-то, реализована передача аргументов по ссылке. Что это значит, и почему нам это важно знать?
Forwarded from Типичный программист
5 игр, чтобы подучить SQL (и не уснуть по дороге)
SQLPD — расследуете преступления как аналитик SQL-полиции. Каждое задание — отдельное дело.
SQL Island — выживаете после крушения на острове, выполняя SQL-задачи, чтобы выбраться.
SQL Murder Mystery — ищете убийцу в базе данных. Свобода действий и минимум подсказок.
Lost at SQL — спасаете подлодку и команду, проходя сюжетные SQL-челленджи.
SQL Squid Game — Решаете задачи по мотивам игры в кальмара, чтобы не повторить судьбу коллеги-аналитика.
#игры #sql
SQLPD — расследуете преступления как аналитик SQL-полиции. Каждое задание — отдельное дело.
SQL Island — выживаете после крушения на острове, выполняя SQL-задачи, чтобы выбраться.
SQL Murder Mystery — ищете убийцу в базе данных. Свобода действий и минимум подсказок.
Lost at SQL — спасаете подлодку и команду, проходя сюжетные SQL-челленджи.
SQL Squid Game — Решаете задачи по мотивам игры в кальмара, чтобы не повторить судьбу коллеги-аналитика.
#игры #sql
Forwarded from Артём Шумейко
9 правил написания REST API
Новое видео: YouTube | VK | Rutube
Ну и холиварное же видео получилось! Хотел рассказать о том, как мне нравится писать API, а по итогу 100+ комментариев на ютубе о том, как надо писать REST API (и вообще все уже давно на grpc пишут).
В общем, есть что обсудить) Обязательно посмотрите, если еще не смотрели
Ваши лайки👍 мотивируют меня снимать больше видео
Новое видео: YouTube | VK | Rutube
Ну и холиварное же видео получилось! Хотел рассказать о том, как мне нравится писать API, а по итогу 100+ комментариев на ютубе о том, как надо писать REST API (и вообще все уже давно на grpc пишут).
В общем, есть что обсудить) Обязательно посмотрите, если еще не смотрели
Ваши лайки
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Как писать REST API — 9 правил
9 правил из практики написания REST API — в одном видео!
Разверните инфраструктуру для проекта любой сложности в надежном и гибком облаке Selectel: https://slc.tl/dqdm3
🎓 Стань крепким разработчиком на Практическом курсе по Backend разработке: https://clck.ru/3KNJBk…
Разверните инфраструктуру для проекта любой сложности в надежном и гибком облаке Selectel: https://slc.tl/dqdm3
🎓 Стань крепким разработчиком на Практическом курсе по Backend разработке: https://clck.ru/3KNJBk…
Советую подписаться на youtube канал Артема Шумейко.
Очень полезный контент для python разработчиков
https://www.youtube.com/@artemshumeiko
Очень полезный контент для python разработчиков
https://www.youtube.com/@artemshumeiko
YouTube
Артём Шумейко
Привет, друзья! Меня зовут Артём Шумейко. Я Senior Python Backend разработчик. На этом канале я помогаю разработчикам улучшать хард скиллы и развивать карьеру. По моим видео ты станешь крепким разработчиком и начнешь зарабатывать больше. Подпишись 🤟🏻
Сотрудничество:…
Сотрудничество:…
Жизненный цикл контейнера Docker — пошаговый процесс создания, тестирования, развертывания и управления приложением с использованием Docker.
Вот этапы, представленные на схеме:
Write a Dockerfile — Написание Dockerfile (описание среды и инструкций для сборки контейнера).
Build the image — Сборка Docker-образа.
Image stored locally — Хранение образа локально.
Test locally — Локальное тестирование контейнера.
Deploy to server/cloud — Развертывание на сервере или в облаке.
Container executes — Запуск контейнера.
Push to registry — Отправка образа в Docker Registry (например, Docker Hub).
Monitor/restart containers — Мониторинг и перезапуск контейнеров
Вот этапы, представленные на схеме:
Write a Dockerfile — Написание Dockerfile (описание среды и инструкций для сборки контейнера).
Build the image — Сборка Docker-образа.
Image stored locally — Хранение образа локально.
Test locally — Локальное тестирование контейнера.
Deploy to server/cloud — Развертывание на сервере или в облаке.
Container executes — Запуск контейнера.
Push to registry — Отправка образа в Docker Registry (например, Docker Hub).
Monitor/restart containers — Мониторинг и перезапуск контейнеров