🎮 Сравниваем три gamedev-библиотеки на Python
Давайте сравним три популярных варианта: PyGame, Cocos2d и Ursina Engine.
✅ Мы в Max – подписывайся
Python — отличный язык для быстрого прототипирования игр, и выбор библиотеки может сильно повлиять на ваш опыт разработки.
Давайте сравним три популярных варианта: PyGame, Cocos2d и Ursina Engine.
✅ Мы в Max – подписывайся
🔥2
✂️ Срез списка Python
Особенности работы со срезами:
🔻Срезы всегда возвращают новый список, а не изменяют исходный.
🔻Индексы могут выходить за границы списка без ошибок.
🔻Если начало больше конца при положительном шаге - вернется пустой список.
🔻Срезы работают аналогично и для других последовательностей (строки, кортежи).
✅ Мы в Max – подписывайся
Особенности работы со срезами:
🔻Срезы всегда возвращают новый список, а не изменяют исходный.
🔻Индексы могут выходить за границы списка без ошибок.
🔻Если начало больше конца при положительном шаге - вернется пустой список.
🔻Срезы работают аналогично и для других последовательностей (строки, кортежи).
✅ Мы в Max – подписывайся
👍3
🔐 Стеганография в Python
Python позволяет спрятать сообщение внутри обычного изображения с помощью библиотеки
Так можно прятать тексты и файлы внутри изображений.
⚠️ Стеганография скрывает сам факт наличия данных, но для защиты конфиденциальной информации лучше дополнительно использовать шифрование.
✅ Мы в Max – подписывайся
Python позволяет спрятать сообщение внутри обычного изображения с помощью библиотеки
steganography.from steganography.steganography import Steganography
Steganography.encode(
"original.jpg",
"secret.png",
"Это секретное сообщение!"
)
Так можно прятать тексты и файлы внутри изображений.
⚠️ Стеганография скрывает сам факт наличия данных, но для защиты конфиденциальной информации лучше дополнительно использовать шифрование.
✅ Мы в Max – подписывайся
🔥4👍1
🔥 SQL для начинающих: 10 важных советов, которые сэкономят вам часы
💡 Бонус:
▫️STRING_AGG — для склейки строк (вместо GROUP_CONCAT в MySQL).
▫️Минимизируйте подзапросы — иногда JOIN быстрее.
▫️Индексы — ускоряют WHERE, но замедляют INSERT.
✅ Мы в Max – подписывайся
💡 Бонус:
▫️STRING_AGG — для склейки строк (вместо GROUP_CONCAT в MySQL).
▫️Минимизируйте подзапросы — иногда JOIN быстрее.
▫️Индексы — ускоряют WHERE, но замедляют INSERT.
✅ Мы в Max – подписывайся
🔥2👍1
💣 Самоуничтожающийся Python-скрипт
Python-скрипт может удалить собственный файл после выполнения.
💡 Полезно для временных и одноразовых скриптов.
⚠️ Это не гарантирует удаление всех следов работы программы.
✅ Мы в Max – подписывайся
Python-скрипт может удалить собственный файл после выполнения.
import os
print("Скрипт завершает работу...")
os.remove(__file__)
__file__ содержит путь к текущему .py-файлу, а os.remove() удаляет его.💡 Полезно для временных и одноразовых скриптов.
⚠️ Это не гарантирует удаление всех следов работы программы.
✅ Мы в Max – подписывайся
🔥3😁2
🫥 Главный red flag любого питониста
Тест на совместимость провален на первом свидании.
✅ Мы в Max – подписывайся
Тест на совместимость провален на первом свидании.
✅ Мы в Max – подписывайся
😁3
🧹 Забыли закрыть файл? В Python для этого есть
Контекстные менеджеры автоматически освобождают ресурсы после выполнения блока кода.
Не нужно вручную вызывать
✅ Мы в Max – подписывайся
withКонтекстные менеджеры автоматически освобождают ресурсы после выполнения блока кода.
with open("data.txt") as f:
data = f.read()
# файл уже закрытНе нужно вручную вызывать
f.close() — Python сделает это сам, даже если внутри блока возникнет ошибка.with используют не только с файлами, но и с соединениями, блокировками, транзакциями и другими ресурсами.✅ Мы в Max – подписывайся
👍2🔥1
💻 Await в асинхронном коде — это не опция
Запускаете 10 API-запросов через asyncio, а они всё равно выполняются 10 секунд? Знакомо?
Решение: используйте await для операций ввода-вывода. Замените requests на httpx — API похожий, но клиент действительно асинхронный.
❗️ Теперь 10 запросов могут выполняться примерно за 1 секунду вместо 10.
✅ Мы в Max – подписывайся
Запускаете 10 API-запросов через asyncio, а они всё равно выполняются 10 секунд? Знакомо?
async def fetch():
return requests.get(url).json()
# ← блокирует event loop
Решение: используйте await для операций ввода-вывода. Замените requests на httpx — API похожий, но клиент действительно асинхронный.
import httpx
async def fetch():
async with httpx.AsyncClient() as client:
r = await client.get(url)
return r.json()
❗️ Теперь 10 запросов могут выполняться примерно за 1 секунду вместо 10.
✅ Мы в Max – подписывайся
🔥1
🚫 Тройка в двойке не жилец
В мире Python есть две большие версии, между которыми была огромная пропасть несовместимости: старый Python 2 (уже давно мертв, но «легаси-код» на нем остался) и современный Python 3.
💡Мораль: придуманная ошибка MutexError (ошибка взаимоисключения) показывают то же самое, что и на мышке: обе версии одновременно работать не могут, они конфликтуют за «слот» в одной системе.
✅ Мы в Max – подписывайся
В мире Python есть две большие версии, между которыми была огромная пропасть несовместимости: старый Python 2 (уже давно мертв, но «легаси-код» на нем остался) и современный Python 3.
💡Мораль: придуманная ошибка MutexError (ошибка взаимоисключения) показывают то же самое, что и на мышке: обе версии одновременно работать не могут, они конфликтуют за «слот» в одной системе.
✅ Мы в Max – подписывайся
❤2
detect smile_[@PythonTechCode].py
711 B
🙂 Исходный код программы для определения улыбки на изображении
Эта программа — небольшой пример привлекательности мира компьютерного зрения.
Для её запуска нужно установить OpenCV с помощью этой команды:
✅ Мы в Max – подписывайся
Эта программа — небольшой пример привлекательности мира компьютерного зрения.
Для её запуска нужно установить OpenCV с помощью этой команды:
pip install opencv-python
✅ Мы в Max – подписывайся
😁1👀1