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

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

Цены: @heywan_media

Реклама на бирже: https://telega.in/c/+IOa15XDNbxRkYzNi
Download Telegram
🎮 Создаём головоломку на Python с помощью Pygame

В статье рассказывается, как шаг за шагом создать простую, но увлекательную головоломку под названием Amazing Frogs.

📌 Что вы узнаете:

— Как работать с Pygame для создания игрового поля.
— Использование тайлов и анимаций для персонажей.
— Логика управления игроком и взаимодействия объектов.
— Добавление звуков, анимаций и других игровых эффектов.

🖥 Перейти к статье

🐍 Ghostly Python | #статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82🔥2
📱 Делаем код чище с помощью Vulture

Vulture — это удобный инструмент, который помогает находить неиспользуемые переменные, функции, классы и модули в вашем коде. Удаление такого «мёртвого кода» делает проект чище, быстрее и проще в поддержке.

💡 Основные возможности

— Анализирует ваш код и выводит список неиспользуемых объектов.
— Помогает уменьшить объём кода, удалив ненужные фрагменты.
— Простая интеграция в процессы CI/CD.

⚙️ Как использовать

1. Установка

pip install vulture


2. Запустите анализ вашего проекта

vulture path/to/your/project


3. Получите список мёртвого кода и очистите его.


📱 Ссылка на GitHub

🐍 Ghostly Python | #инструменты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥41
Media is too big
VIEW IN TELEGRAM
🐍 Асинхронность, многопоточность, многопроцессность в python

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

📱 Ссылка на первоисточник

🐍 Ghostly Python | #уроки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3
📱 Фишка: Словари с несколькими значениями для одного ключа с помощью defaultdict

Стандартные словари в Python не всегда удобны, если вам нужно хранить несколько значений для одного ключа. Например, если вы хотите, чтобы каждый ключ хранил список значений, вам придется проверять, существует ли уже такой ключ, и если нет — создавать новый список.

Однако, в подобных ситуациях, мы можем использовать defaultdict из модуля collections.

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

from collections import defaultdict

my_dict = defaultdict(list)
my_dict["a"].append(1)
my_dict["a"].append(2)
my_dict["b"].append(3)

print(my_dict)


➡️ В этом примере:

— Каждый ключ по умолчанию связан с пустым списком.
— Если ключ "a" уже существует, добавляем значение в список.
— Если ключа "a" нет, он создается с пустым списком, и добавляется значение.

Удобно для работы с группами данных, подсчетами и многими другими задачами.

🐍 Ghostly Python | #фишки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
🎮 CodeDex: Изучаем Python играя

CodeDex — это интерактивная платформа, которая позволяет изучать Python через практику и увлекательные задачи.

📌 Что вас ждет?

Интерактивные уроки: учите Python шаг за шагом, выполняя задания прямо в браузере.

Практика на реальных задачах: от простых основ до сложных алгоритмов.

Геймификация обучения: очки, уровни и достижения делают процесс увлекательным.

Раздел для опытных пользователей: сложные темы, такие как работа с API, асинхронность и обработка данных.

⛓️ Ссылка на платформу

Кстати, вот еще репозиторий с готовым кодом решений задач: GitHub 📱


🐍 Ghostly Python | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63
👩‍💻 Модуль copy в Python

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

Из документации по Python 3

Операторы присваивания в Python не копируют объекты, они создают привязки между целью и объектом. Для коллекций, которые являются изменяемыми или содержат изменяемые элементы, иногда требуется копирование, чтобы можно было изменить одну копию, не изменяя другую. Этот модуль предоставляет общие операции поверхностного и глубокого копирования.


➡️ Поверхностное копирование

Поверхностное копирование строит новый составной объект, а затем вставляет в него ссылки на объекты имеющиеся в оригинале.

>>> import copy
>>> a = [[1],[2],[3]]
>>> b = copy.copy(a) # поверхностно копируем список a в список b

>>> a
#[[1], [2], [3]]
>>> b
#[[1], [2], [3]]


➡️ Глубокое копирование

При глубоком копировании создается новый составной объект, а затем в него рекурсивно вставляются копии объектов, содержащихся в оригинале.


>>> import copy
>>> a = [[1],[2],[3]]
>>> b = copy.deepcopy(a) # создаем глубокую копию списка a

>>> a[0][0] = 0
>>> a[1] = None

>>> a
#[[0], None, [3]]
>>> b
#[[1], [2], [3]]


📌 Вывод

🟢 Поверхностное копирование создает новый объект, который содержит ссылки на те же элементы, что и оригинал.

🟢 Глубокое копирование создает новый объект, в который рекурсивно вставляются копии всех элементов оригинала, обеспечивая независимость копии от оригинала.

Кстати, пишите в комменты ваши пожелания по контенту 🔥
P.S. На днях уже залью обещанный гайд =)


🐍 Ghostly Python | #библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
⚙️ Уроки по NumPy

Что из себя представляет пакет NumPy для языка Python. Как он устанавливается и импортируется в программы. Первое знакомство с массивами array. Способ их задания с помощью функции array и демонстрация некоторых возможностей.

➡️ Ссылка на курс

🐍 Ghostly Python | #уроки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63🔥3
💡 1000+ идей для проектов

Это огромная коллекция идей для проектов, которые можно реализовать на разных языках программирования, включая Python.

📌 Что внутри?

Проекты для новичков: калькуляторы, конвертеры и простые игры.
Идеи для продвинутых: чат-боты, системы управления, веб-приложения.
Креативные задачи: генераторы паролей, парсеры данных, API для фильмов.
Темы на любой вкус: от искусственного интеллекта до мобильных приложений.

📱 Ссылка на репозиторий

🐍 Ghostly Python | #идеи
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
👁 Скрипт: Удаление дубликатов файлов в заданной директории

Есть много способов избавиться от дубликатов файлов в папке, но этот скрипт будет искать и удалять такие файлы, опираясь на их хеш-сумму. Это гарантирует, что будут удаляться только точные копии.

⚙️ Как это работает:

1. Мы вычисляем хеш каждого файла с помощью библиотеки hashlib.
2. Если файл с таким хешом уже встречался в директории, значит, это дубликат, и его можно безопасно удалить.
3. Скрипт выводит список удаленных файлов, или сообщение о том, что дубликатов не найдено.

📂 Скрипт с подробным комментированием кода уже в архиве:


➡️ Скачать...

🐍 Ghostly Python | #скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🔍 Фишка: Быстрая проверка подстроки с помощью оператора in

Вместо использования громоздких методов поиска, таких как .find(), Python позволяет лаконично проверить наличие подстроки с помощью оператора in.

⚙️ Пример:

text = "Python — отличный язык!"
if "отличный" in text:
print("Нашли слово!") # Вывод: Нашли слово!


Оператор in работает не только со строками, но и с другими коллекциями (списки, множества, словари).

🔜 Пример с коллекциями:

items = [1, 2, 3]
print(2 in items) # Вывод: True


🐍 Ghostly Python | #фишки
Please open Telegram to view this post
VIEW IN TELEGRAM
🏆11👍9🔥2
🖼️ Библиотека: Humanize

Humanize — это библиотека для преобразования чисел, дат и других данных в удобочитаемый формат. Она позволяет выводить информацию в виде, понятном пользователю, например, "2 часа назад" или "5.4K".

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

import humanize
from datetime import datetime, timedelta

# Преобразование чисел
print(humanize.intword(1234567)) # "1.2 million"
print(humanize.intcomma(1234567)) # "1,234,567"

# Форматирование времени
now = datetime.now()
past = now - timedelta(hours=5)
print(humanize.naturaltime(past)) # "5 часов назад"

# Размеры файлов
print(humanize.naturalsize(1024000)) # "1.0 MB"


Humanize делает ваш код более ориентированным на пользователя и улучшает представление данных.

✔️ Установка

pip install humanize


🐱 Ссылка на GitHub

🐍 Ghostly Python | #библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤‍🔥4
🖥 Методы списков в Python

🌐 А вот ещё годный сайт, где собраны самые используемые методы/функции Python

🐍 Ghostly Python | #шпаргалки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍196🔥1
👨‍💻 Гайд: Как работать с JSON в Python. Часть 1

JSON (JavaScript Object Notation) — это текстовый формат обмена данными, который часто используется в API, конфигурационных файлах и при работе с веб-приложениями. В Python для работы с JSON используется встроенный модуль json.

1️⃣ Чтение JSON-строк

Вы можете загружать JSON-данные из строки с помощью функции json.loads.

import json

# JSON-строка
data = '{"name": "Alice", "age": 25, "hobbies": ["reading", "coding"]}'

# Преобразуем строку в Python-словарь
parsed_data = json.loads(data)
print(parsed_data["name"]) # Alice
print(parsed_data["hobbies"]) # ['reading', 'coding']


2️⃣ Чтение JSON из файла

Если JSON-данные хранятся в файле, используйте функцию json.load.

import json

# Открываем файл с JSON
with open("data.json", "r") as file:
data = json.load(file)

# Работаем с данными
print(data["name"]) # Alice
print(data["age"]) # 25


➡️ Пример файла data.json:

{
"name": "Alice",
"age": 25,
"hobbies": ["reading", "coding"]
}


3️⃣ Запись JSON в файл

Функция json.dump сохраняет данные Python в файл в формате JSON.

import json

# Данные для записи
data = {
"status": "success",
"code": 200,
"message": "Data saved successfully!"
}

# Сохраняем в файл
with open("output.json", "w") as file:
json.dump(data, file, indent=4) # indent=4 делает JSON читабельным


➡️ Результат в файле output.json:

{
"status": "success",
"code": 200,
"message": "Data saved successfully!"
}


Чтобы не растягивать пост, я решил разбить эту тему на несколько частей. Во второй части рассмотрим: преобразование Python-объектов в JSON, настройку сериализации JSON, а также несколько советов по использованию модуля json.

🐍 Ghostly Python | #гайды
Please open Telegram to view this post
VIEW IN TELEGRAM
👍87🔥3👏1
📸 Скрипт: Сортировка фотографий по дате съёмки с помощью Python

Наверное у каждого есть папка с фотографиями, в которой свалено просто все, что можно, в одну кучу... Так вот если вы все таки надумали навести порядок, то можно организовать фото по дате съёмки с помощью библиотеки Pillow.

⚙️ Как это работает?

Фотографии часто содержат метаданные EXIF, где хранится дата съёмки. Мы используем её для создания папок и перемещения файлов.

✔️ Установка библиотеки

Для работы скрипта, потребуется установить библиотеку Pillow:

pip install pillow


📌 Что делает этот скрипт:

1. Считывает дату съёмки из EXIF-метаданных, а если их нет, то берет дату создания файла.
2. Создаёт папки для каждой даты (формат: YYYY-MM-DD).
3. Перемещает фотографии в соответствующие папки.

📂 Скрипт с комментированием кода уже в архиве:


➡️ Скачать...

🐍 Ghostly Python | #скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
📱 Списки (массивы) в Python и работа с ними

Статья рассказывает о списках в Python — одном из самых универсальных и часто используемых инструментов для работы с данными.

📌 Вы узнаете:

🟢 Как создавать списки и добавлять в них элементы.
🟢 Как работать с индексами, извлекать данные и использовать срезы.
🟢 Какие методы доступны для изменения, сортировки и фильтрации списков.
🟢 Практические примеры, которые помогут быстро разобраться с основными функциями списков.

🖥 Перейти к статье

🐍 Ghostly Python | #статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🖥 Paramiko: модуль Python для работы с SSH-соединениями

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

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

import paramiko

# Создаем объект SSHClient
ssh = paramiko.SSHClient()

# Устанавливаем политику авторизации (автоматически добавляем хосты в known_hosts)
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# Подключаемся к серверу
ssh.connect(hostname='example.com', username='user', password='password')

# Выполняем команду на сервере
stdin, stdout, stderr = ssh.exec_command('ls -l')

# Читаем вывод команды
print(stdout.read().decode())

# Закрываем соединение
ssh.close()


✔️ Установка

pip install paramiko


➡️ Документация paramiko

🐍 Ghostly Python | #библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
👨‍💻 Гайд: Как работать с JSON в Python. Часть 2

В первой части мы разобрались с чтением и записью JSON-данных. Теперь давайте посмотрим, как преобразовать Python-объекты в JSON, настроить сериализацию и эффективно использовать модуль json.

1️⃣ Преобразование Python-объектов в JSON

Чтобы конвертировать Python-объект в JSON-строку, используется функция json.dumps:

import json

# Python-словарь
data = {
"name": "Alice",
"age": 25,
"is_active": True
}

# Преобразование в JSON-строку
json_data = json.dumps(data)
print(json_data) # {"name": "Alice", "age": 25, "is_active": true}


➡️ Типы данных Python, такие как dict, list, str, int, float и bool, автоматически преобразуются в их JSON-аналоги.

2️⃣ Настройка сериализации JSON

Если данные содержат нестандартные типы, такие как datetime, то их нужно преобразовать перед сериализацией.

Пример:

import json
from datetime import datetime

# Python-данные с датой
data = {
"name": "Alice",
"created_at": datetime.now()
}

# Кастомная функция для обработки объектов
def custom_serializer(obj):
if isinstance(obj, datetime):
return obj.isoformat()
raise TypeError("Невозможно сериализовать объект")

# Сериализация с кастомной функцией
json_data = json.dumps(data, default=custom_serializer, indent=4)
print(json_data)


💡 Советы и трюки при работе с JSON

1️⃣ Форматированный вывод JSON

Добавьте параметр indent для читабельности:

json_data = json.dumps(data, indent=4)


2️⃣ Сортировка ключей

Для сортировки ключей используйте sort_keys=True:

json_data = json.dumps(data, sort_keys=True)


3️⃣ Декодирование больших чисел

Используйте parse_int и parse_float для контроля обработки чисел:

json.loads('{"big_number": 12345678901234567890}', parse_int=lambda x: int(x))


Если было полезно, ставь 🔥


🐍 Ghostly Python | #гайды
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍62
💻 Скрипт для мониторинга нагрузки сервера с использованием psutil

Для создания такого скрипта, нам потребуется библиотека — psutil. С её помощью можно отслеживать загрузку процессора, использование памяти, работу дисков и сети.

⚙️ Пример скрипта

import psutil
import time

def monitor_server():
print("Мониторинг сервера...")
print("-" * 40)

while True:
# Загрузка процессора
cpu_usage = psutil.cpu_percent(interval=1)
print(f"Загрузка CPU: {cpu_usage}%")

# Использование памяти
memory = psutil.virtual_memory()
print(f"Память: {memory.percent}% использовано ({memory.used / 1e+6:.2f} MB из {memory.total / 1e+6:.2f} MB)")

# Использование дисков
disk = psutil.disk_usage('/')
print(f"Диск: {disk.percent}% использовано ({disk.used / 1e+9:.2f} GB из {disk.total / 1e+9:.2f} GB)")

# Загрузка сети
net = psutil.net_io_counters()
print(f"Сеть: Отправлено {net.bytes_sent / 1e+6:.2f} MB, Получено {net.bytes_recv / 1e+6:.2f} MB")

print("-" * 40)
time.sleep(5) # Интервал обновления (в секундах)

# Запуск мониторинга
monitor_server()


📌 Что делает этот скрипт?

— Измеряет процент использования всех ядер.
— Показывает, сколько памяти занято и свободно.
— Оценивает использование главного раздела /.
— Выводит объём переданных и полученных данных.

✔️ Установка библиотеки

pip install psutil


Скрипт можно доработать, добавив запись логов или прикрутить к боту для отправки уведомлений в Telegram при превышении заданных порогов.

🐍 Ghostly Python | #скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥1
👩‍💻 Python: неочевидное и вероятное

Python известен своей простотой и предсказуемостью, но за этой доступностью скрываются интересные и неочевидные особенности, способные удивить программистов с базовым опытом(а если повезет, то и опытных). В этой статье мы рассмотрим несколько таких «фокусов» и тонкостей, чтобы глубже понять внутреннюю логику и философию языка.

🖥 Перейти к статье

🐍 Ghostly Python | #статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🔥 Подборка лучших библиотек и фреймворков Python для любых задач.

📂 Сохраняем


🐍 Ghostly Python | #библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥72
📱 Фишка: Декораторы с аргументами для настройки поведения

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

⚙️ Пример

Создадим декоратор, который повторяет выполнение функции заданное количество раз:

def repeat(n):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(n):
func(*args, **kwargs)
return wrapper
return decorator

@repeat(3) # Выполнится 3 раза
def say_hello():
print("Привет!")

say_hello()


🔜 Вывод:

Привет!
Привет!
Привет!


В этом примере мы передаем число n в декоратор, чтобы он выполнял функцию несколько раз.

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


🐍 Ghostly Python | #фишки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤‍🔥3