TGViewer
Channel Public Channel
Python Portal

Python Portal

@pythonportal

Всё самое интересное из мира Python

Сотрудничество, реклама: @devmangx

Работаем с @Spiral_Yuri

РКН: https://clck.ru/3GMMF6
Subscribers
50.5K
Photos
2.9K
Videos
491
Links
1.3K

Showing posts older than #4519 · Back to latest

Older Posts 20 shown
Post #4518 14K
Хочешь понять, как работает Git — напиши свой.

Линус Торвальдс прославился тем, что написал Git за один день на C, уложившись в 1000 строк — и закоммитил его через Git. Сейчас проект насчитывает >500k строк, но его ядро можно реализовать за одни выходные.

Write Yourself a Git – пошаговое руководство, помогающее создать упрощённую версию Git на Python. Автор показывает, как за ~978 строк кода реализовать ключевые команды Git: init, add, commit, log, checkout, status и другие — при этом всё остаётся совместимым с настоящим Git

Git кажется сложным, но его ядро на удивление простое. Проект wyag позволяет «разобрать его на атомы» и понять фундаментальные концепции через код 😡

👉 @PythonPortal
  • ❤ 55
  • 👍 18
  • 🔥 10
Post #4516 11.3K
Совет по Python:

При объединении итерируемых объектов разной длины используй itertools.zip_longest() вместо zip(), чтобы все элементы были объединены в пары.

zip() объединяет элементы, пока один из итерируемых не закончится:

>>> list(zip(letters, numbers))
[('a', 1), ('b', 2)]


zip_longest() продолжает объединение до конца самого длинного итерируемого объекта:

>>> list(zip_longest(letters, numbers))
[('a', 1), ('b', 2), ('c', None)]


fillvalue позволяет указать значение-заполнитель для отсутствующих элементов:

>>> list(zip_longest(letters, numbers, fillvalue='N/A'))
[('a', 1), ('b', 2), ('c', 'N/A')]


Используй zip_longest, когда важно сохранить все данные, даже при разной длине итерируемых объектов 🤵

👉 @PythonPortal
  • 🔥 42
  • ❤ 18
  • 👍 9
  • 🏆 5
Post #4515 13.4K
Наткнулся на прикольный ресурс для изучения SQL

Это интерактивный тренажёр, который позволяет практиковаться в написании SQL-запросов прямо в браузере.

Подойдёт и новичкам, и тем, кто хочет освежить SELECT, JOIN и другие команды на практике 📝

👉 @PythonPortal
  • 👍 49
  • ❤ 12
Post #4514 11.8K
Совет по Python:

Функция locals()

Встроенная функция locals() возвращает словарь, представляющий текущую локальную таблицу символов.

Таблица символов — это структура, в которой Python хранит все имена (переменные, функции, классы и т.д.), доступные в определённой области видимости.

Когда locals() вызывается внутри функции, она возвращает словарь со всеми локальными переменными, определёнными в рамках этой функции.

В примере переменные z и x определены локально внутри функции. Переменная y = 20 является глобальной и не относится к области видимости my_func(). Поэтому locals() внутри my_func не включает y

👉 @PythonPortal
  • 👍 55
  • ❤ 18
  • 🔥 3
  • 🤔 3
Post #4513 11.6K
Топ-10 распространённых магических методов в Python

__init__(self) – Инициализация нового объекта

__str__(self) – Строковое представление

__repr__(self) – Представление для отладки

__len__(self) – Длина объекта

__getitem__(self, key) – Доступ к элементу по индексу/ключу

__setitem__(self, key, value) – Установка значения по индексу/ключу

__delitem__(self, key) – Удаление элемента по ключу

__eq__(self, other) – Проверка на равенство

__add__(self, other) – Поведение оператора сложения +

__call__(self, ...) – Делает экземпляр вызываемым как функция

👉 @PythonPortal
  • 🤝 32
  • ❤ 26
  • 👍 15
  • 🤣 5
  • 🔥 2
Post #4512 11.4K
Использование контекстного менеджера как таймера

Большинство разработчиков ассоциируют контекстные менеджеры (with-выражение) только с работой с файлами. Но на самом деле этот паттерн решает более общую задачу.

Контекстные менеджеры идеально подходят для управления любыми ресурсами, у которых есть чёткий момент начала и завершения. Например:

• File I/O
• Сессии логирования
• Транзакции в базе данных
• Сетевые и БД-соединения
• Замер производительности
• Управление потоками и блокировками

with гарантирует, что инициализация и очистка ресурса будут выполнены автоматически, даже если в блоке возникнет исключение. Это делает код чище и надёжнее.

Вместо того чтобы вручную замерять время до и после блока кода, можно использовать контекстный менеджер — это чистое и питоничное решение.

Обычно контекстный менеджер реализуется как класс с методами __enter__ и __exit__

Но есть более лаконичный способ — использовать декоратор @contextmanager из модуля contextlib, чтобы писать генераторные менеджеры без лишнего шаблонного кода.

Пример как использовать контекстный менеджер как таймер прикрепил ✌️

👉 @PythonPortal
  • 👍 30
  • ❤ 15
  • 🔥 4
Post #4511 12.7K
Auto PY to EXE — это open-source инструмент для упаковки Python-проектов в исполняемые файлы, который гораздо проще в использовании, чем pyfuze

Он предоставляет наглядный графический интерфейс: просто выбираешь скрипт, настраиваешь нужные параметры и нажимаешь кнопку запуска —> весь процесс упаковки проходит без необходимости возиться с командной строкой.

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

Инструмент кроссплатформенный, поддерживает Windows, macOS и Linux, а установка через pip максимально простая:

pip install auto-py-to-exe


👉 @PythonPortal
  • 👍 47
  • 🔥 14
  • ❤ 10
Post #4510 13.8K
Это что игра What It Prints?

Да, это онлайн-игра‑головоломка для разработчиков и студентов, где нужно угадать, что выведет код. Простая и увлекательная: показывается фрагмент, а вы должны определить его вывод

Для самопроверки самое то 💯

👉 @PythonPortal
  • 👍 45
  • 🔥 8
  • 😢 6
  • ❤ 4
Post #4509 12.8K
Numpy CheatSheet.pdf9 MB
Это шпаргалка по библиотеке NumPy

Краткое руководство по основным операциям и функциям для работы с массивами в Python. 😄

👉 @PythonPortal
  • 👍 28
  • ❤ 11
  • 🏆 3
Post #4508 13.5K
Совет по Python: deque.maxlen

Знаете ли вы, что можно задать максимальную длину списка, используя deque из модуля collections?

Класс deque (двусторонняя очередь) из модуля collections поддерживает параметр maxlen, который устанавливает максимальный размер очереди. Когда очередь достигает этого размера, добавление новых элементов автоматически удаляет элементы с противоположного конца, реализуя поведение "первым пришёл — первым ушёл" (FIFO) с ограничением по размеру.

В приведённом примере deque имеет максимальную длину 3. При добавлении значения 4 удаляется 1, что делает такую структуру идеальной для реализации скользящего окна последних трёх элементов 📖

👉 @PythonPortal
  • ❤ 36
  • 👍 22
  • 🤯 8
  • 🏆 1
Post #4507 12.5K
Я только сегодня узнал об этом трюке с GitHub

Просто введите repo.new в адресной строке браузера — и сразу откроется страница создания нового репозитория на GitHub.

Такой простой способ сэкономить время 🤯

👉 @PythonPortal
  • 👍 43
  • ❤ 12
  • 🤔 5
  • 🏆 2
Post #4505 11.7K
Совет по Pytest:

Используйте пользовательские маркеры pytest, чтобы добавлять метаданные к тестам.

Это упрощает организацию и запуск определённых групп тестов

В примере на изображении используются два пользовательских маркера:

🔹@pytest.mark.performance

– Применён к тесту для замера производительности test_page_load_time

🔹@pytest.mark.database

– Применён к тестам для работы с базой данных test_database_connection и test_data_integrity

Мы можем запускать выборочно, например тесты, помеченные маркером @pytest.mark.database

pytest -m database  


👉 @PythonPortal
  • 👍 21
  • ❤ 9
  • 🔥 7
  • 🏆 1
Post #4504 12.1K
Буквально за считанные минуты собери умного чат-бота для своего сайта

Firecrawl только что выкатили Firestarter — полноценную платформу для чат-ботов, которая:

🔸Скрейлит твой сайт
🔸Индексирует контент
🔸Разворачивает чат-интерфейс с поддержкой RAG и API в стиле OpenAI

Полностью open-source - ccылка

Попробуйте: ссылка

👉 @PythonPortal
  • 👍 21
  • 🔥 6
  • 🤝 3
  • ❤ 1
  • 💊 1
Post #4503 12.3K
Аналогично Unix-пайпам, в Python можно строить цепочки функций, переопределяя метод __or__

Это позволяет связывать операции так, что вывод одной функции становится входом для следующей → чисто, читаемо и удобно для композиции

Именно так LangChain реализует элегантные пайплайны вроде: chat_prompt | groq_model | output_parser

Пример:

class Pipe:
def __init__(self, func):
self.func = func

def __call__(self, x):
return self.func(x)

def __or__(self, other):
return self.__class__(lambda x: other(self(x)))


🔸Pipe — обёртка над функцией

🔸__or__ (|) позволяет комбинировать пайпами, как в Unix

🔸__call__ делает объект вызываемым, как обычную функцию

Теперь можно обернуть любые функции в Pipe и комбинировать их в цепочку:

double = Pipe(lambda x: x * 2)
square = Pipe(lambda x: x ** 2)

pipeline = double | square
print(pipeline(3)) # (3 * 2) ** 2 = 36


👉 @PythonPortal
  • 👍 30
  • ❤ 17
  • 🏆 4
  • 🔥 2
Post #4502 12.5K
Наткнулся на библиотеку art — делает ASCII-арт из текста за секунды.

Простая установка:

pip install art


Пример использования:

from art import text2art

Art = text2art("art") # шрифт по умолчанию
print(Art)

# Пример вывода:
# _
# __ _ _ __ | |_
# / _` || '__|| __|
# | (_| || | | |_
# \__,_||_| \__|

Art_block = text2art("art", font='block', chr_ignore=True)
print(Art_block)

# Выведет крупный блок‑текст


Идеально для приветственных страничек или добавить декоративный вывод в CLI или логах 😊

👉 @PythonPortal
  • ❤ 58
  • 👍 18
  • 🔥 11
  • 😁 3
Post #4501 12.2K
Конструкции в Python, использующие блок else:

🔸Условный оператор if-else

🔸Цикл for-else

🔸Цикл while-else

🔸Блок try-except-else

На фото мы видим 4 примера:

1. проверяет условие. Если x < 5 — выполняется if, иначе — else

2. Цикл ищет i == 10. Не находит, break не срабатывает → выполняется else

> Блок else выполняется только если цикл не прерван через break

3. Цикл отрабатывает до конца, else выполняется после завершения while

> else не выполнится, если внутри цикла будет break

4. Пытается выполнить 10 / 2. Исключения нет — срабатывает else

> else выполняется только если не было исключений в try

👉 @PythonPortal
  • ❤ 40
  • 👍 15
  • 🔥 6
  • 🏆 1
Post #4500 12.8K
Если хочешь вкатиться в ML, а не просто читать теорию, начинай с практики прямо в браузере.

В этом курсе всё: туториалы, Colab-ноутбуки и реальные примеры.

Будешь тренировать модели на Python с TensorFlow, визуализировать в TensorBoard и деплоить хоть в браузер, хоть на сервер.

Подходит и для новичков, и для тех, кто уже пробовал Keras или NumPy 😊

👉 @PythonPortal
  • ❤ 20
  • 👍 7
  • 🔥 3
  • 💊 1
Post #4498 12.2K
Возможность Python, которую часто недооценивают -> операции над множествами

Вот пример, как можно удалять или обновлять теги, приводя старые и новые значения к множествам, а затем выполняя операции над множествами

Очистка и приведение к множествам:

existing = {t for tag in old_tags if (t := tag.strip())}
incoming = {t for tag in new_tags if (t := tag.strip())}


🔸tag.strip() удаляет пробелы с начала и конца строки.

🔸t := tag.strip() сохраняет очищенное значение в переменную t.

🔸if (t := tag.strip()) фильтрует пустые строки ("").

Удаление существующих тегов:

updated = existing - incoming
print("Removed tags:", updated)


Добавление новых тегов (без дубликатов):

updated = existing | incoming
print("Added tags:", updated)


👉 @PythonPortal
  • 🔥 21
  • 👍 6
  • ❤ 5
  • 🤯 3
  • 👀 1
Post #4497 12.3K
Если хочешь стать скилловым бэкенд-разработчиком, то пили как можно больше проектов.

В этом курсе их три: генератор блогов, клон Netflix и клон Spotify.

Прокачаешь бэкенд на практике с Python, Django и PostgreSQL 😄

👉 @PythonPortal
  • 👍 19
  • 🔥 16
  • ❤ 11
  • 💊 3
Post #4496 11.7K
Основатель школы автотестировщиков QA.GURU проводит бесплатный интенсив «Из баг-репортов до первого автотеста на Python»

🔜 Во вторник, 24 июня, в 12:00 по МСК. Бесплатно.

Вы начинающий автоматизатор или ручной тестировщик? Займите место сейчас ▶

За несколько часов опытный инженер объяснит, как написать и запустить автотест 🤓

Что сделаете за занятие:

— Напишете свой автотест на Python с нуля.
— Настроите рабочую среду за 10 минут (и она реально будет работать).
— Разберётесь, когда использовать Selenium, Playwright или Selene.
— Запустите автотест с Pytest и без него.

И совсем немного о трендах QA:

— Зачем компаниям QA, которые умеют писать код.
— Python + автотесты как минимальный входной билет в индустрию.
— Нейросети: конкурент или ассистент?

Станислав Васенков, основатель школы — в прошлом — Head of QAA pflb.ru, автор allure-notifications, победитель хакатона от EPAM, спикер Heisenbug.

Занять место ▶

Реклама. Рекламодатель: ИП Васенков Станислав Олегович, ИНН 774335827403, erid: 2Vtzqw51r9U
  • ❤ 8
  • 👍 3
  • 💊 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →