Pythoner
6.96K subscribers
922 photos
27 videos
4 files
715 links
Полезные материалы по Python, которые будут интересны опытному и начинающему разработчику.

Сотрудничество - @flattys
Цены - @serpent_media

Канал на бирже: https://telega.in/c/pythonercode
Download Telegram
✈️Функция help в Python используется для получения справочной информации о встроенных функциях, методах, модулях, классах и объектах Python. Эта функция является очень полезным инструментом для изучения новых методов и библиотек, а также для получения помощи в решении проблем.

➡️Чтобы использовать функцию help, просто вызовите ее и передайте объект, для которого вы хотите получить справочную информацию. Например, если вы хотите получить справочную информацию о функции print, вы можете вызвать функцию help следующим образом:
help(print)

🔫Это приведет к выводу документации о функции print в вашем интерпретаторе Python.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82🔥2
✈️Контейнер — это объект, предназначенный для хранения других объектов. Контейнеры реализуют различные структуры данных, такие как списки, кортежи, словари, множества и другие.

➡️Основное назначение контейнеров — удобное и эффективное хранение и доступ к группам объектов. Контейнеры позволяют легко добавлять, удалять и итерировать элементы.

➡️Все контейнеры в Python реализуют общие методы, такие как len() для получения размера и contains() для проверки вхождения элемента. Это обеспечивает единый интерфейс работы с разными типами контейнеров.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍42
👍5🔥2
Что выдаст код выше
Anonymous Quiz
11%
(7, 3)
54%
[(7, 3)]
13%
7, 3
22%
Error
👀6🔥2🤔1🤨1
🤔Разбор

Возникнет ошибка. Т.к. функция zip() ожидает итерируемые объекты (например, списки, кортежи или строки), а передаётся два целых числа


🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥52
✈️ImageHash – это Python-библиотека для вычисления perceptual-хешей изображений. Она помогает находить похожие или дублирующиеся картинки, даже если они были изменены (например, обрезаны или пережаты).

➡️ Ключевая функция:
Сравнение изображений через хеши (ahash, dhash, phash, whash), что позволяет быстро искать дубликаты без полного перебора пикселей.

➡️Пример использования:
from PIL import Image
import imagehash

hash1 = imagehash.average_hash(Image.open('image1.jpg'))
hash2 = imagehash.average_hash(Image.open('image2.jpg'))
print(hash1 - hash2) # Чем меньше разница, тем больше похожи изображения


💡 Главный плюс:
Автоматизация поиска дубликатов с высокой точностью и поддержкой разных алгоритмов хеширования. Отлично подойдет для очистки медиабиблиотек.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63🔥3
✈️Библиотека Keras - это высокоуровневая нейронная сеть, написанная на языке Python. Она предоставляет простой и интуитивно понятный интерфейс для создания и обучения глубоких нейронных сетей. Благодаря своей простоте и гибкости, Keras позволяет разработчикам быстро создавать и испытывать различные модели машинного обучения.

➡️Преимущества Keras

Keras имеет несколько преимуществ, которые делают его популярным выбором среди разработчиков машинного обучения. Во-первых, Keras обладает простым и интуитивно понятным API, что делает его легко изучаемым и использованием даже для новичков. Во-вторых, Keras предоставляет множество предварительно обученных моделей, которые можно использовать для решения различных задач. Наконец, Keras обеспечивает высокую производительность и эффективность, благодаря использованию оптимизированных библиотек, таких как TensorFlow и Theano.

➡️Возможности Keras

Keras поддерживает широкий спектр возможностей машинного обучения. Он позволяет создавать и обучать различные типы нейронных сетей, включая полносвязные сети, сверточные нейронные сети и рекуррентные нейронные сети. Кроме того, Keras предоставляет инструменты для работы с изображениями, текстом и временными рядами. Он также поддерживает автоматическое распределение обучения на несколько GPU, что позволяет ускорить процесс обучения на больших данных.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥31
✈️Метод strip() удаляет начальные и конечные пробелы (а также другие переданные символы) из строки. Это удобно для очистки ввода, сравнения данных и предобработки текста.

➡️Пример:
user_input = "  hello world  "
cleaned = user_input.strip()
print(cleaned)
# ➜ "hello world"

🔫В этом примере strip() убирает лишние пробелы по краям строки, оставляя только значимый текст.

💡strip() удобно использовать при чтении из файлов, работе с формами, разборе CSV/JSON и валидации пользовательского ввода. Также существуют .lstrip() и .rstrip() — для удаления только слева или справа. Метод делает работу с текстом точной и предсказуемой

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥3👍2
✈️Что такое асинхронное программирование?
Асинхронное программирование - это способ написания кода, позволяющий выполнять несколько задач одновременно без блокировки основного потока выполнения. В Python для этого используются ключевые слова async и await, которые делают функции асинхронными и определяют точки, где происходит ожидание.

➡️Преимущества асинхронного программирования:
1. Увеличение производительности: Асинхронный код позволяет эффективно использовать ресурсы, ускоряя выполнение задач.
2. Масштабируемость: Обработка множества задач одновременно без блокировки позволяет создавать масштабируемые приложения.
3. Улучшен отклик приложения: Пользователи получают быстрый отклик, даже если выполняются длительные операции.

➡️Основные концепции асинхронного программирования в Python:
- `async def` и `await`: Обозначают асинхронные функции и точки ожидания выполнения задачи.
- Цикл событий (Event Loop): Основной механизм управления выполнением асинхронных задач.
- Корутины (Coroutines): Асинхронные функции, которые могут приостанавливать свое выполнение.

➡️Пример асинхронного кода:
import asyncio

async def async_example():
print("Начало выполнения")
await asyncio.sleep(2)
print("Завершение выполнения")

async def main():
tasks = [async_example() for _ in range(5)]
await asyncio.gather(*tasks)

if __name__ == "__main__":
asyncio.run(main())


➡️Интеграция асинхронного кода:
Множество библиотек и фреймворков в Python уже поддерживают асинхронное программирование, включая aiohttp, asyncio, и многие другие. Это позволяет создавать высокопроизводительные веб-приложения, работающие с асинхронными запросами.

Дополнительные ресурсы:
- Документация Python по асинхронному программированию
- Статья на Real Python: "Async IO in Python: A Complete Walkthrough"

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍85🔥2
✈️Инкапсуляция - это один из четырех основных принципов объектно-ориентированного программирования. Она позволяет скрыть внутреннюю реализацию объекта от других объектов и защитить его состояние от неправильного использования.

➡️ Методы и атрибуты
В Python, чтобы скрыть атрибуты объекта, их нужно объявить как приватные, используя два подчеркивания перед именем атрибута. Например, для создания приватного атрибута name нужно написать __name. Также для доступа к этому атрибуту извне класса нужно использовать специальные методы get и set.

➡️Метод get возвращает значение приватного атрибута, а метод set устанавливает новое значение. Эти методы должны быть определены в самом классе. Например:
class Person:
def __init__(self, name):
self.__name = name

def get_name(self):
return self.__name

def set_name(self, name):
self.__name = name

person = Person("John")
print(person.get_name()) # "John"
person.set_name("Mike")
print(person.get_name()) # "Mike"


💡Для чего нужна инкапсуляция вообще?
- Защита данных от внешнего доступа
- Предотвращение случайных изменений данных
- Упрощение взаимодействия с объектами
- Сокрытие сложной логики работы объекта от пользователя

💡Будет ли код работать без нее?
- Да, будет!

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3🔥3🤣1
✈️CPython — это основная реализация Python на C, и именно она запускается, когда ты пишешь python file.py.

➡️Работает в 3 шага:
1. Парсинг — Python-код превращается в AST (дерево разбора)
2. Компиляция — AST превращается в байткод (.pyc), понятный интерпретатору
3. Исполнение — байткод читается виртуальной машиной, которая шаг за шагом исполняет инструкции

➡️Можно посмотреть байткод вот так:
import dis

def hello():
print("hi")

dis.dis(hello)

🔫Выведет набор инструкций, как CPU, только питоновый.
CPython — медленный, но гибкий. Именно тут живёт GIL, и именно он влияет на потоки.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥31
✈️Метод setdefault() используется для получения значения по ключу из словаря, одновременно создавая его, если ключа ещё нет.

➡️Пример:
data = {}
data.setdefault("users", []).append("Анна")
data.setdefault("users", []).append("Борис")

print(data)

{'users': ['Анна', 'Борис']}


💡Удобно при работе с коллекциями внутри словаря — не нужно проверять наличие ключа вручную. Альтернатива конструкции с if key not in dict.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍6🔥2
✈️В мире Python программирования, логирование играет важную роль в отслеживании работы приложений и выявлении ошибок. Одним из самых удобных и мощных инструментов для этой задачи является библиотека Loguru. В этом посте мы рассмотрим основные преимущества и возможности Loguru, которые делают его отличным выбором для логирования в Python.

➡️Простота использования
Одним из основных преимуществ Loguru является его простота использования. В отличие от стандартной библиотеки logging, которая может показаться сложной и громоздкой, Loguru предлагает простой и интуитивно понятный интерфейс. Для начала работы достаточно импортировать библиотеку и начать логирование с помощью одной строки кода:
from loguru import logger

logger.info("Привет, Loguru!")


Это позволяет значительно сократить время на настройку и сразу приступить к логированию.

➡️Гибкость и мощность
Loguru предоставляет широкие возможности для настройки логирования. Вы можете легко настроить формат сообщений, уровни логирования и маршрутизацию логов. Например, вы можете отправлять логи в разные файлы в зависимости от их уровня важности:
logger.add("debug.log", level="DEBUG")
logger.add("error.log", level="ERROR")

logger.debug("Это сообщение для отладки")
logger.error("Это сообщение об ошибке")


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

➡️Встроенные дополнительные функции
Помимо стандартных возможностей логирования, Loguru включает в себя множество дополнительных функций, которые делают его ещё более привлекательным. Например, библиотека поддерживает автоматическое добавление контекстной информации к логам, такую как имя функции, строка кода и т.д. Также существует возможность автоматического ротации логов, что позволяет избежать переполнения дискового пространства:
logger.add("file_{time}.log", rotation="500 MB")

logger.info("Это сообщение будет записано в новый файл при достижении лимита в 500 MB")


💡Эти и другие функции делают Loguru мощным инструментом для профессионального логирования.

🖥GitHub loguru

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81🔥1
✈️Оба — in-memory key-value хранилища, но Redis — более функциональный и гибкий, тогда как Memcached — максимально простой и быстрый.

➡️Redis:
— поддерживает разные типы данных (строки, списки, множества, хэши, sorted sets)
— умеет работать с TTL, Pub/Sub, скриптами (Lua)
— поддерживает персистентность и репликацию

➡️Memcached:
— только строки и числа
— максимально простой и быстрый
— нет встроенной персистентности
— хорош для простого кэширования без сложной логики

💡Когда что выбрать:
Redis — если нужно больше, чем просто кэш (например, счётчики, очереди, блокировки)

Memcached — если важна скорость и simplicity при коротком сроке жизни данных

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍31
🎮Pyxel — это библиотека для создания ретро-игр на языке программирования Python. Она идеально подходит для разработчиков, которые хотят погрузиться в мир 8-битных игр, создавая собственные проекты с минимальными усилиями.

💡Почему Pyxel

➡️Простота использования

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

➡️Встроенные инструменты

Pyxel поставляется с набором встроенных инструментов, которые облегчают разработку игр. Среди них: редактор спрайтов, редактор звуков и редактор карт.

➡️Кроссплатформенность

Ещё одно важное преимущество Pyxel — это её кроссплатформенность. Библиотека поддерживает Windows, macOS и Linux, что позволяет разрабатывать игры на любой из этих платформ.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥41
✈️Библиотека DataSketch реализует алгоритмы вероятностного хеширования и сжатия данных для быстрого сравнения больших наборов. Она идеально для обработки Big Data и поиска дубликатов.

➡️Пример использования:
from datasketch import MinHash, MinHashLSH

# Создаем "отпечатки" текстов
m1 = MinHash(num_perm=128)
m2 = MinHash(num_perm=128)
for word in ["data", "science"]: m1.update(word.encode())
for word in ["data", "analysis"]: m2.update(word.encode())

# Сравниваем (0.75 = порог схожести)
print("Схожесть:", m1.jaccard(m2)) # Результат: 0.5


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

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥2
✈️Когда у вас есть файл с защищенным паролем, а пароль неизвестен, брутфорс может помочь попытаться разгадать его.

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

import string
import itertools

def brute_force_pass(target, length):
chars = string.ascii_letters + string.digits # Символы: буквы и цифры
for attempt in itertools.product(chars, repeat=length): # Генерация комбинаций
pwd_attempt = ''.join(attempt) # Преобразование кортежа в строку
print(f"Trying: {pwd_attempt}") # Вывод текущей попытки
if pwd_attempt == target: # Проверка, совпадает ли пароль
print(f"Password found: {pwd_attempt}") # Если совпал - выводим его
return pwd_attempt
print("Password not found") # Если пароль не найден
return None


💡Метод брутфорса может быть мощным инструментом, однако его использование должно быть этичным и законным. И никогда не пытайтесь взломать файлы или системы без разрешения владельцев)))

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥31
✈️Python предоставляет нам множество возможностей для работы с данными. Одной из таких возможностей является использование списков для хранения объектов. Сейчас мы рассмотрим, как создать класс, создать объекты на основе этого класса, поместить эти объекты в список и обратиться к ним.

➡️Создание класса
Для начала, давайте создадим класс, который будет представлять людей. Класс будет иметь атрибуты "имя" и "возраст". Вот пример такого класса:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age


➡️Создание объектов
Теперь, когда у нас есть класс, мы можем создать объекты на его основе. Например, давайте создадим двух людей:
person1 = Person("John", 25)
person2 = Person("Alice", 30)


➡️Помещение объектов в список
Чтобы поместить объекты в список, мы можем использовать метод append(). Например, чтобы создать список людей и добавить туда наших двух людей, мы можем написать следующий код:
people = []
people.append(person1)
people.append(person2)

⬆️Теперь у нас есть список people, в котором хранятся объекты, представляющие двух людей.

➡️Обращение к объектам в списке
Чтобы обратиться к объектам в списке, мы можем использовать индексы. Например, чтобы получить имя первого человека в списке people, мы можем написать следующий код:
first_person_name = people[0].name

⬆️Теперь в переменной first_person_name будет храниться значение "John".

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92🔥2👀2🤬1
✈️browser-history — это библиотека на Python, которая позволяет легко получать историю посещений и закладки из популярных браузеров.

➡️Это очень полезно, если вам нужно анализировать свою интернет-активность или работать с данными о посещенных сайтах.

➡️Пример:
from browser_history import get_history

# Получаем историю
outputs = get_history()

# Это список кортежей (дата и время, URL)
his = outputs.histories

# Выводим историю на экран
for entry in his:
print(entry)


💻GitHub

💡Модуль также поддерживает получение закладок, хотя эта функция считается экспериментальной.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍3🔥1
✈️gRPC — это фреймворк удалённых вызовов (Remote Procedure Call) от Google, который использует бинарный протокол Protocol Buffers (protobuf) вместо текста (JSON).

➡️Основные преимущества перед REST:
- Скорость и компактность — бинарные данные меньше и передаются быстрее, чем JSON.
- Жёсткий контракт (IDL) — схема данных описана в .proto файле, из которого генерируются клиенты и серверы на разных языках.
- Стриминг — поддержка двунаправленных потоков (клиент - сервер), что в REST приходится эмулировать через WebSocket/SSE.
- Мульти-язычность — можно легко писать сервисы на разных языках, и они будут совместимы.

➡️Пример .proto файла:
syntax = "proto3";

service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}

message HelloRequest {
string name = 1;
}

message HelloReply {
string message = 1;
}


💡Заключение:
gRPC отлично подходит для high-performance микросервисов и real-time систем, где важны скорость и строгая типизация. REST же проще для публичных API и быстрой интеграции.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72🔥1😡1