Статьи о программировании(Python, Django, Golang)
15 subscribers
143 photos
5 videos
1 file
155 links
Телеграм канал сайта https://gadjimuradov.ru/
Download Telegram
Чтобы отсортировать последовательность в Python, используйте 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
Forwarded from Zen of Python
Python 3.14 станет быстрее на 30% без изменений в существующем коде

Произойдет ускорение за счет оптимизации C-компилятора, что выполняет байт-код. Это затронет версии языка 3.14 и выше (уже можно скачать с официального сайта).

Подробнее

@zen_of_python
30 бесплатных API для разработчиков
10 полезных библиотек для Python-разработчика

Сегодня я подготовил для вас подборку из 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
🚀 5 крутых Python-фишек, о которых знают не все

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 — начнём с самой простой и понятной наивной реализации, а затем шаг за шагом будем разбираться, какие изъяны в ней есть, и придумывать как их решать, постепенно усложняя общую модель.

Это один из лучших способов понять сложную систему или концепцию — пройти путь её поэтапного проектирования. Система сложна, осознать её очень непросто, но мы разобьём её на простые шаги, понять которые очень легко. После этого пазл сам собой сложится в голове, и общая картина системы будет для вас такой же простой и очевидной.
Forwarded from Zen of Python
@classmethod vs. @staticmethod

Если вы только повстречались с этой парочкой и с трудом понимаете документацию, вот 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 создает подробнейшую ДОКУМЕНТАЦИЮ ко всему, что делает — со ссылками и схемами.

Забираем нового помощника здесь.

👍 Бэкдор
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
5 игр, чтобы подучить SQL (и не уснуть по дороге)

SQLPD — расследуете преступления как аналитик SQL-полиции. Каждое задание — отдельное дело.

SQL Island — выживаете после крушения на острове, выполняя SQL-задачи, чтобы выбраться.

SQL Murder Mystery — ищете убийцу в базе данных. Свобода действий и минимум подсказок.

Lost at SQL — спасаете подлодку и команду, проходя сюжетные SQL-челленджи.

SQL Squid Game Решаете задачи по мотивам игры в кальмара, чтобы не повторить судьбу коллеги-аналитика.

#игры #sql
9 правил написания REST API

Новое видео: YouTube | VK | Rutube

Ну и холиварное же видео получилось! Хотел рассказать о том, как мне нравится писать API, а по итогу 100+ комментариев на ютубе о том, как надо писать REST API (и вообще все уже давно на grpc пишут).

В общем, есть что обсудить) Обязательно посмотрите, если еще не смотрели

Ваши лайки 👍 мотивируют меня снимать больше видео
Please open Telegram to view this post
VIEW IN TELEGRAM
Жизненный цикл контейнера 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 — Мониторинг и перезапуск контейнеров