Python Community
12.9K subscribers
1.26K photos
37 videos
15 files
740 links
Python Community RU - СНГ сообщество Python-разработчиков

Чат канала: @python_community_chat

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

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
⚡️ Добавление пробелов между знаками

Небольшой скрипт, который добавляет добавить пробел после каждого символа.

Первым делом скрипт проверяет массив sys.argv. Если длинна массива больше единицы, то массив превращается в один большой текст и сохраняется в переменной text.

Далее, с помощью list, превращаем text в массив символов и просто добавляем между ними пробелы.

Если же никаких аргументов нет, то показываем пользователю, как пользоваться скриптом.

• P. S. sys.argv[0]название запускаемого файла

💾 Скачать пример скрипта
⚡️ Библиотека infinity

Чаще всего назначение самой большой переменной вызывает проблемы про написании определённых сортировок.

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

Однако это — крайне неудобно, учитывая то, что есть и более простые способы.

Так, вы можете воспользоваться float("infinity") или float("inf"), чтобы получить максимальное возможное число.

Если перед "infinity" написать знак "-", библиотека будет искать минимальное возможное число.
⚡️ Аргументы командной строки

• Встроенная библиотека sys

sys — библиотека, дающая доступ к некоторым переменным и функциям, которые взаимодействуют с Python. Пока что в этой библиотеке нам потребуется только переменная argv.

Это — массив состоящий из строк, в который входят все аргументы командной строки.

• Argparse

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

Первым делом нужно создать сам парсер — argparse.ArgumentParser() и воспользоваться add_argument, чтобы добавить новые значения.

Также, аргументы командной строки можно получить используя parse_args.
⚡️ Примитивная игра «Угадай число»

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

В этом игровом цикле программа каждый раз спрашивает у пользователя число от 0 до 1000.

• Если введённое число меньше, чем загаданное, то мы оповещаем об этом игрока.

• Если значения равны, пишем игроку о его победе.

• В другом случае — выводим ему сообщение о том, что загаданное число больше чем то, что он ввёл.

В случае отказа от продолжения игры мы просто закрываем программу, используя sys.exit().

💾 Скачать пример кода
⚡️ Разные цвета в выводе Python

Помимо сторонних библиотек, можно использовать и встроенные инструменты.

Так, в команде print вы можете использовать специальные символы для смены цвета фона, текста и наложения эффектов просто изменяя некоторые значения:

• от \033[0m до \033[7m — различные эффекты для теста, такие как мигание, курсив, подчёркивание.

• \033[0m — сброс к изначальным настройкам

• от \033[30m до \033[37m — цвет текста. Возможные варианты — чёрный, красный, зелёный, жёлтый, синий, фиолетовый, бирюзовый, белый.

• от \033[40m до \033[47m — цвет фона. Варианты — такие же, как и цвет текста.
⚡️ Три «помощника» цикла

enumerate — функция, которая возвращает число (чаще всего это индекс) и значение в виде кортежа. Она будет полезна, если, например, нужно почитать количество строк в файле или узнать, какой индекс у элемента.

zip — функция, которая соединяет два списка в один. За один проход в цикле возвращается кортеж с значением из первого списка и второго.

reversed — также используется в цикле: переворачивает список, чтобы вы могли пройтись по нему от последнего элемента до первого, при этом ничего не изменяя. Если вам нужен именно перевёрнутый список, используйте listName.reverse().
⚡️ Библиотеки для создания телеграм ботов

• Python Telegram bot — довольно удобная и понятная библиотека с хорошей документацией. Отлично подойдёт для начала изучения работы ботов.

Установка: pip install python-telegram-bot

• Telebot — хорошая альтернатива предыдущей библиотеке. Также с полной документацией и большим количеством статей.

Установка: pip install pyTelegramBotAPI

• Telethon — более тяжёлая библиотека, чем две предыдущие, но с гораздо большим функционалом. Также есть возможность создавать пользователей и поддержка работы с async.

Установка: pip3 install telethon
Модуль random

Раньше мы уже использовали этот модуль в одном из файлов, настало время рассказать о нём поподробнее.

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

randint(min, max) — возвращает случайное целое число.

randrange(start, stop) — возвращает случайное число в определённом промежутке.

choice(someList) — возвращает случайный элемент из списка

shuffle(someList) — перемешивает значения в списке
⚡️ Асинхронное программирование

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

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

Для примера — пока вы ждёте приготовление торта (ожидание ответа от сервера) вы можете расставить тарелки (подготовка данных).

Самая популярная библиотека для данных задач — asyncio. Скачать её можно по следующей команде:

pip install asyncio
⚡️ Пример асинхроного программирования

Первым делом импортируем библиотеки: asyncio и aiohttp — она используется для асинхроного создания запросов.

После этого создаём функции с ожиданием и отправкой запроса.

Используя get_event_loop() получаем цикл, в котором работает ayncio, создаём список задач, используя create_task(func).

После этого, с помощью run_until_complete(asyncio.wait(tasks)) запускаем цикл и ожидаем его выполнения и закрываем цикл — close().

Скачайте код по ссылке ниже, чтобы увидеть результат.

💾 Скачать пример кода
⚡️ Строки в Python

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

Первое — срез.

С его помощью можно убрать некоторые элементы, причём не только в строках, но и в обычных списках.

Для этого следует использовать:

• someStr[1:9] — эта команда вернёт все значения от первого до девятого индекса

Также, есть несколько методов:

• replace(from, to) — метод, который заменяет все значения в списке с from на to.

• split(symbols) — метод, который позволяет разбить строку на список, используя символы, передаваемые в параметры

• format(*args, *kwargs) — форматирование строки. Очень удобный инструмент: он улучшает читабельность кода и упрощает его.

💾 Скачать пример кода
⚡️Корутины и таски в ассинхроном программировании

Корутины — это функции, определённые с помощью await или async.

Стоит отметить, что обычный вызов функции не выполняет её: для этого стоит использовать asyncio.run() или await.

Таски или задачи — те же самые корутины, но они запускаются одновременно.

Для их создания используют asyncio.create_task(), а виде параметра принимает корутину.

Для запуска программ одновременно, следует использовать asyncio.gather(*tasks).
Try, except, finally

В python мы довольно часто встречаемся с ошибками: деление на ноль, IndexError или, например, не правильное преобразование.

В таких случаях поможет конструкция try. Первым делом вы пишем действия внутри, которые собираемся выполнить. В случае, если возникнет ошибка, то except «поймает» её и выполнит указанные действия.

Блок finally выполняется всегда, независимо от того, возникло исключение или нет. Его часто используют для закрытия файлов или соединений.
JSON в python

JSON — JavaScript Object Notation. Это структурированные данные, понятные человеку.

Они, также называемые «словарём» часто используются при создании сайтов и игр.

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

Создать словарь можно используя фигурные скобки. Для работы с ними используют модуль json, а метод dumps превращает словарь в строку и позволяет сохранить в файл.

Также, метод load используется для декодирования и позволяет считывать значения с файла напрямую.
⚡️ Пример бота на Telebot.

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

Начнём с того, что у нас есть файл с названием my_token.py. Внутри него хранится переменная с токеном бота, которую мы и импортируем.

Метод TeleBot() уведомляет библиотеку о создании бота, после чего можно начать создавать функции, используя декораторы.

• start_message()
— отправляет сообщение стартовое сообщение с кнопками внизу

• how_message() — выбирает случайное настроение и отвечает пользователю на его основе

• bot.pooling() — приостанавливает поток и ожидает сообщения от пользователя
👍1
⚡️ Кортеж, список, множество или словарь?

В Python часто встречаются эти понятия, но не все понимают, что это такое и чем они отличаются. Поэтому...

• Список — набор элементов, который может изменяться и индексироваться.

• Кортеж — набор элементов, которые не меняются, но также индексируется. Чаще всего его используют в функциях, которые возвращают какие-то значения, но их нельзя менять.

• Множество — набор элементов, которые могут меняться (зависит от способа создания). Он не индексируется, но его отличие в том, что все элементы ни разу не повторяются.

• Словарь — набор элементов типа ключ — значение. Ключи не могут меняться и являются "индексами", также они не должны повторятся. Значения могут и меняться, и повторятся.
👍1
⚡️ Классы и особые методы

Каждый раз, когда вы создаёте какой-либо класс, он наследуется от object.

Object имеет особые методы:

__init — инициализатор класса. Он вызывается тогда, когда класс создаётся.

str,
repr__— возвращает класс в виде строки. Разница между ними в том, что str должен вернуть боле «красивый» вывод.

__getatribute, setattr__ — вызывается методами getattr и setattr. Позволяют получать и задавать значения переменных классов.

__doc__ — документация для пользования классом. Также её можно создать используя многострочную строку после создания класса.
⚡️ Модули в Python

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

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

Импортировать его можно используя import, а если нужно взять какие-то определённые атрибуты — from module import attribute.

Также, если требуется создать псевдоним, стоит использовать ключевое слово as.

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

Декораторы — это «обёртки» для функций, которые позволяют изменить поведение функции, при этом не меняя её код.

Создаются они очень просто:

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

Их можно использовать, например, в библиотеке Telethon, о чём мы писали тут.

Стоит отметить, что декораторы немного замедляют вызов функции, запрещают её задекорировать и слегка ухудшают отладку.
⚡️ Сетевые подключения в Python

На самом деле, всё проще, чем может показаться на первый взгляд. Первым делом нам надо импортировать модуль socket. Сделать это и сохранить его можно с помощью socket = socket.socket()

Также, для создания сервера, нужно привязать к нему порт. Воспользуемся bind(("ip", 9999)), который принимает запросы с IP. Его можно оставить пустым, если нужно пропускать любые IP.

После этого ожидаем подключения командой listen(count).

• count — это количество подключений одновременно.

• accept() — метод, который возвращает кортеж с классом соединения и адресом

Теперь нужно просто сделать клиент, используя connect(("ip", 9999)), чтобы подключиться к IP по порту 9999.