Ghostly Python
9.03K subscribers
535 photos
24 videos
599 links
Погружаемся в мир Python: задачи, фишки, библиотеки и террабайты полезного материала.

Сотрудничество: @heywan_n1

Цены: @heywan_media

Реклама на бирже: https://telega.in/c/+IOa15XDNbxRkYzNi
Download Telegram
Вопрос с собеса

Что делает оператор walrus (:=) в Python и когда его стоит использовать?

Пример🔽
# Без walrus
line = input("Введите строку: ")
while line != "":
print(f"Вы ввели: {line}")
line = input("Введите строку: ")

# С walrus
while (line := input("Введите строку: ")) != "":
print(f"Вы ввели: {line}")


Ответ🔽
Оператор "морж" (:=), добавленный в Python 3.8, позволяет присваивать значение переменной прямо внутри выражения. Это особенно полезно в циклах и условиях, где раньше приходилось писать отдельное присваивание.

Преимущества:

Позволяет избежать повторного вызова функции (например, input()).

Делает код короче и, при правильном использовании, — читаемее.

📌 Используется там, где результат выражения нужен и для логики, и для сохранения значения.

❗️ Не стоит злоупотреблять: если конструкция становится нечитаемой — лучше использовать обычное присваивание.


🐍 Ghostly Python | #собес
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍1
👩‍💻 Пишем персонального AI-ассистента на Python

Рассказываю, как собрать своего голосового ассистента: он слушает, распознаёт, отвечает и не требует облаков. Всё на Python и локально — идеальный проект для старта с AI и аудио.

➡️ Ссылка на статью

🐍 Ghostly Python | #статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥123
🖼️ Библиотека: funcy

funcy — это функциональная утилита для Python, которая вдохновлена языками вроде Lisp и Haskell. Она добавляет множество полезных декораторов, функций для работы с коллекциями и ленивыми вычислениями.

ℹ️ Основные возможности:

🟢 @memoize, @cache — простая мемоизация без лишнего кода.
🟢 walk(), walk_keys(), walk_values() — трансформация структур данных.
🟢 select(), compact(), pluck() — лаконичная фильтрация и выборка.
🟢 Поддержка ленивых вычислений через lmap, lfilter, lremove и др.

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

from funcy import memoize, select

@memoize
def fib(n):
if n < 2:
return n
return fib(n - 1) + fib(n - 2)

print(fib(35)) # ➔ Быстрее за счёт кэширования

data = {"a": 1, "b": None, "c": 2}
print(select(lambda x: x is not None, data)) # ➔ {'a': 1, 'c': 2}


✔️ Установка:

pip install funcy


➡️ Ссылка на документацию

🐍 Ghostly Python | #библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥22😁6👏3👍2😭1
➡️ LearnPython — интерактивный учебник Python прямо в браузере

LearnPython — это бесплатный онлайн-ресурс, позволяющий изучать Python прямо в браузере. Каждое занятие сопровождается интерактивным терминалом, в котором можно тут же запускать код.

🟢 Уроки от базового синтаксиса до lambda, файлов, классов и модулей.
🟢 Не требует установки Python — всё работает из браузера.
🟢 Подходит для новичков, а также тех, кто хочет быстро повторить основы.
🟢 Есть версии на других языках и переводы.

📌 Отличный способ начать учиться, если под рукой только браузер и 5 минут времени


⛓️ Ссылка на ресурс

🐍 Ghostly Python | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
10
👩‍💻 Telegram-бот с интеграцией AnythingLLM + LM Studio

Собираем Telegram-бота, который локально общается с LLM через AnythingLLM и LM Studio. Никаких сторонних сервисов — всё в пределах команды и её железа.

➡️ Ссылка на статью

🐍 Ghostly Python | #статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
6
📱 Фишка: sys.getsizeof — узнать, сколько памяти занимает объект в Python

Модуль sys предоставляет функцию getsizeof(), с помощью которой можно узнать, сколько байт занимает объект в памяти. Полезно при оптимизации, работе с большими структурами и оценке производительности.

import sys

a = [1, 2, 3, 4, 5]
b = "Привет, мир!"
c = {i: i*i for i in range(10)}

print(sys.getsizeof(a)) # ➔ размер списка
print(sys.getsizeof(b)) # ➔ размер строки
print(sys.getsizeof(c)) # ➔ размер словаря


📌 Как это работает?

🟢 sys.getsizeof(obj) возвращает базовый размер объекта в байтах.
🟢 Учитывает только сам контейнер, не включая рекурсивно вложенные объекты.
🟢 Для точной оценки полной памяти нужно использовать pympler или asizeof из pysizer

🐍 Ghostly Python | #фишки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Please open Telegram to view this post
VIEW IN TELEGRAM
😁22
👩‍💻 Работа с аргументами командной строки с помощью argparse

argparse — встроенный модуль Python для создания понятных интерфейсов командной строки. Позволяет легко добавлять флаги и параметры к скриптам, с автоматической генерацией --help.

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

import argparse

parser = argparse.ArgumentParser(description="Приветствие пользователя")
parser.add_argument("name", help="Имя пользователя")
args = parser.parse_args()

print(f"Привет, {args.name}!")


💬 Как это работает:

1. ArgumentParser() создаёт парсер аргументов.
2. add_argument("name") добавляет обязательный позиционный аргумент.
3. parse_args() читает аргументы из командной строки.
4. Запуск: python script.py АлисаПривет, Алиса!

🟢 Поддерживает позиционные и опциональные аргументы (--debug, --limit 10)
🟢 Генерирует справку по команде -h или --help
🟢 Полезен при создании CLI-утилит, автоматизации и упаковке Python-скриптов в команды


🐍 Ghostly Python | #гайды
Please open Telegram to view this post
VIEW IN TELEGRAM
7
👩‍💻 Как не-программист спас дедлайн и защитил тайны компании: История Веры и GPT для проверки договоров

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

➡️ Ссылка на статью

🐍 Ghostly Python | #статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍1
Вопрос с собеса

Чем отличается isinstance() от type() при проверке типов в Python?

Пример🔽
class Animal: pass
class Dog(Animal): pass

dog = Dog()

print(type(dog) == Dog) # ➔ True
print(isinstance(dog, Dog)) # ➔ True
print(isinstance(dog, Animal)) # ➔ True
print(type(dog) == Animal) # ➔ False


Ответ🔽
Функция type() проверяет точный тип объекта, без учёта наследования. А isinstance() проверяет, является ли объект экземпляром указанного класса или его подклассов.

🟢 type(obj) == SomeClass — строгая проверка, используется, когда нужно исключить наследников.

🟢 isinstance(obj, SomeClass) — гибкая проверка, чаще применяется в реальном коде.

Когда использовать isinstance():
— При работе с классами и их наследниками
— Когда нужно поддерживать полиморфизм

❗️ type() полезен при проверке встроенных типов (int, list, dict) — если точно знаешь, что ищешь, и не хочешь ловить наследников.


🐍 Ghostly Python | #собес
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10👏1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁43🤩51
🖼️ Библиотека: deal

deal — это библиотека контрактного программирования для Python: она позволяет описывать пред- и постусловия, инварианты, исключения и побочные эффекты прямо в коде с помощью декораторов.

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


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

import deal

@deal.pre(lambda x: x >= 0)
@deal.post(lambda result: result >= 0)
@deal.raises(ZeroDivisionError)
def safe_sqrt(x):
return x ** 0.5

print(safe_sqrt(9)) # 3.0
print(safe_sqrt(-1)) # deal.PreContractError


➡️ Также поддерживает автоматическую проверку побочных эффектов (например, изменения глобальных переменных или работы с I/O), генерацию тестов и даже формальную верификацию

✔️ Установка:

pip install deal


➡️ Ссылка на документацию

🐍 Ghostly Python | #библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 NoDPI4Android. Решаем проблему «деградации» YouTube теперь и на Android

Пилил версию NoDPI под Android на Python и Kivy, потому что Java — зло. Рассказываю, как заставил YouTube снова работать нормально, и как РКН опять может психануть. Будет весело.

➡️ Ссылка на статью

🐍 Ghostly Python | #статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42
➡️ Hyperskill — интерактивная проектная платформа для обучения Python и других ЯП

Hyperskill предлагает обучение через реальные проекты, встроенные прямо в IDE (например, PyCharm), с автоматической проверкой и этапами прогресса.

Подходит как для новичков, так и для продвинутых, кто хочет учиться, создавая полноценные приложения.

⛓️ Ссылка на ресурс

🐍 Ghostly Python | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Please open Telegram to view this post
VIEW IN TELEGRAM
😁26💯4😍31🤣1
📱 Фишка: bisect — быстрый бинарный поиск и вставка в отсортированный список

Модуль bisect из стандартной библиотеки Python позволяет эффективно работать с отсортированными списками: выполнять бинарный поиск и вставку, сохраняя порядок.

import bisect

numbers = [1, 3, 4, 7, 9]

# Найти позицию для вставки числа 5
pos = bisect.bisect(numbers, 5)
print(pos) # ➔ 3

# Вставить число в правильное место
bisect.insort(numbers, 5)
print(numbers) # ➔ [1, 3, 4, 5, 7, 9]


📌 Как это работает?

🟢 bisect() возвращает индекс, куда можно вставить элемент, сохраняя порядок
🟢 insort() сразу вставляет элемент в нужную позицию
🟢 Работает за O(log n), что гораздо быстрее линейного поиска в больших списках

🐍 Ghostly Python | #фишки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥83
👩‍💻 Сервер управления боксом и станцией дрона: архитектура и принципы работы

Сервер обеспечивает удалённое управление устройствами, подключёнными по WebSocket. На этапе тестирования к нему также подключено веб-приложение, через которое пользователь может управлять устройствами.

➡️ Ссылка на статью

🐍 Ghostly Python | #статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
2
👩‍💻 Работа с временными файлами на Python с помощью tempfile

tempfile — встроенный модуль Python для безопасного создания временных файлов и директорий. Полезен для тестов, кэширования, временных логов и работы с внешними инструментами.

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

import tempfile

# Создаём временный файл
with tempfile.NamedTemporaryFile(mode='w+', delete=False) as tmp:
tmp.write("Временные данные")
tmp.seek(0)
print(tmp.read()) # ➔ Временные данные

print(f"Файл сохранён как: {tmp.name}")


💬 Как это работает:

1. NamedTemporaryFile() создаёт файл, который можно использовать как обычный файл.

2. mode='w+' означает чтение и запись.

3. delete=False — файл сохраняется после закрытия (иначе удаляется автоматически).

4. Можно использовать временные директории с tempfile.TemporaryDirectory().

🟢 Безопасное имя файла (не будет конфликтов)
🟢 Поддержка кроссплатформенности (работает и на Windows, и на Linux)
🟢 Удобно для промежуточных данных, которые не нужно сохранять надолго


🐍 Ghostly Python | #гайды
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁15🔥2