⚡️ Добавление пробелов между знаками
Небольшой скрипт, который добавляет добавить пробел после каждого символа.
Первым делом скрипт проверяет массив sys.argv. Если длинна массива больше единицы, то массив превращается в один большой текст и сохраняется в переменной text.
Далее, с помощью list, превращаем text в массив символов и просто добавляем между ними пробелы.
Если же никаких аргументов нет, то показываем пользователю, как пользоваться скриптом.
• P. S. sys.argv[0] — название запускаемого файла
💾 Скачать пример скрипта
Небольшой скрипт, который добавляет добавить пробел после каждого символа.
Первым делом скрипт проверяет массив sys.argv. Если длинна массива больше единицы, то массив превращается в один большой текст и сохраняется в переменной text.
Далее, с помощью list, превращаем text в массив символов и просто добавляем между ними пробелы.
Если же никаких аргументов нет, то показываем пользователю, как пользоваться скриптом.
• P. S. sys.argv[0] — название запускаемого файла
💾 Скачать пример скрипта
⚡️ Библиотека infinity
Чаще всего назначение самой большой переменной вызывает проблемы про написании определённых сортировок.
Безусловно, её можно решить простым вводом большого числа или, например, возведением в степень.
Однако это — крайне неудобно, учитывая то, что есть и более простые способы.
Так, вы можете воспользоваться float("infinity") или float("inf"), чтобы получить максимальное возможное число.
Если перед "infinity" написать знак "-", библиотека будет искать минимальное возможное число.
Чаще всего назначение самой большой переменной вызывает проблемы про написании определённых сортировок.
Безусловно, её можно решить простым вводом большого числа или, например, возведением в степень.
Однако это — крайне неудобно, учитывая то, что есть и более простые способы.
Так, вы можете воспользоваться float("infinity") или float("inf"), чтобы получить максимальное возможное число.
Если перед "infinity" написать знак "-", библиотека будет искать минимальное возможное число.
⚡️ Аргументы командной строки
• Встроенная библиотека sys
sys — библиотека, дающая доступ к некоторым переменным и функциям, которые взаимодействуют с Python. Пока что в этой библиотеке нам потребуется только переменная argv.
Это — массив состоящий из строк, в который входят все аргументы командной строки.
• Argparse
С помощью этого аргумента можно гораздо быстрее настраивать правила для других аргументов командной строки.
Первым делом нужно создать сам парсер —
Также, аргументы командной строки можно получить используя parse_args.
• Встроенная библиотека sys
sys — библиотека, дающая доступ к некоторым переменным и функциям, которые взаимодействуют с Python. Пока что в этой библиотеке нам потребуется только переменная argv.
Это — массив состоящий из строк, в который входят все аргументы командной строки.
• Argparse
С помощью этого аргумента можно гораздо быстрее настраивать правила для других аргументов командной строки.
Первым делом нужно создать сам парсер —
argparse.ArgumentParser()
и воспользоваться add_argument, чтобы добавить новые значения.Также, аргументы командной строки можно получить используя parse_args.
⚡️ Примитивная игра «Угадай число»
Первым делом программа запускает основной цикл, в котором спрашивает, желает ли игрок начать игру или выйти из программы. В первом случае запускается игровой цикл.
В этом игровом цикле программа каждый раз спрашивает у пользователя число от 0 до 1000.
• Если введённое число меньше, чем загаданное, то мы оповещаем об этом игрока.
• Если значения равны, пишем игроку о его победе.
• В другом случае — выводим ему сообщение о том, что загаданное число больше чем то, что он ввёл.
В случае отказа от продолжения игры мы просто закрываем программу, используя sys.exit().
💾 Скачать пример кода
Первым делом программа запускает основной цикл, в котором спрашивает, желает ли игрок начать игру или выйти из программы. В первом случае запускается игровой цикл.
В этом игровом цикле программа каждый раз спрашивает у пользователя число от 0 до 1000.
• Если введённое число меньше, чем загаданное, то мы оповещаем об этом игрока.
• Если значения равны, пишем игроку о его победе.
• В другом случае — выводим ему сообщение о том, что загаданное число больше чем то, что он ввёл.
В случае отказа от продолжения игры мы просто закрываем программу, используя sys.exit().
💾 Скачать пример кода
⚡️ Разные цвета в выводе Python
Помимо сторонних библиотек, можно использовать и встроенные инструменты.
Так, в команде print вы можете использовать специальные символы для смены цвета фона, текста и наложения эффектов просто изменяя некоторые значения:
• от \033[0m до \033[7m — различные эффекты для теста, такие как мигание, курсив, подчёркивание.
• \033[0m — сброс к изначальным настройкам
• от \033[30m до \033[37m — цвет текста. Возможные варианты — чёрный, красный, зелёный, жёлтый, синий, фиолетовый, бирюзовый, белый.
• от \033[40m до \033[47m — цвет фона. Варианты — такие же, как и цвет текста.
Помимо сторонних библиотек, можно использовать и встроенные инструменты.
Так, в команде print вы можете использовать специальные символы для смены цвета фона, текста и наложения эффектов просто изменяя некоторые значения:
• от \033[0m до \033[7m — различные эффекты для теста, такие как мигание, курсив, подчёркивание.
• \033[0m — сброс к изначальным настройкам
• от \033[30m до \033[37m — цвет текста. Возможные варианты — чёрный, красный, зелёный, жёлтый, синий, фиолетовый, бирюзовый, белый.
• от \033[40m до \033[47m — цвет фона. Варианты — такие же, как и цвет текста.
⚡️ Три «помощника» цикла
•
•
•
•
enumerate
— функция, которая возвращает число (чаще всего это индекс) и значение в виде кортежа. Она будет полезна, если, например, нужно почитать количество строк в файле или узнать, какой индекс у элемента.•
zip
— функция, которая соединяет два списка в один. За один проход в цикле возвращается кортеж с значением из первого списка и второго.•
reversed
— также используется в цикле: переворачивает список, чтобы вы могли пройтись по нему от последнего элемента до первого, при этом ничего не изменяя. Если вам нужен именно перевёрнутый список, используйте listName.reverse()
.⚡️ Библиотеки для создания телеграм ботов
• Python Telegram bot — довольно удобная и понятная библиотека с хорошей документацией. Отлично подойдёт для начала изучения работы ботов.
Установка:
Установка:
Установка:
• 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) — перемешивает значения в списке
Раньше мы уже использовали этот модуль в одном из файлов, настало время рассказать о нём поподробнее.
random — самая популярная библиотека для создания псевдо-случайных чисел, с довольно большим функционалом.
randint(min, max) — возвращает случайное целое число.
randrange(start, stop) — возвращает случайное число в определённом промежутке.
choice(someList) — возвращает случайный элемент из списка
shuffle(someList) — перемешивает значения в списке
⚡️ Асинхронное программирование
Асинхронное программирование — довольно удобная вещь для оптимизации программы, особенно если она часто работает с запросами, связанные с записью или чтением диска.
Суть ассинхронного программирования такова — пока выполняется что-то одно, долгое, программа не останавливается, а продолжает выполнять свои задачи.
Для примера — пока вы ждёте приготовление торта (ожидание ответа от сервера) вы можете расставить тарелки (подготовка данных).
Самая популярная библиотека для данных задач — asyncio. Скачать её можно по следующей команде:
Асинхронное программирование — довольно удобная вещь для оптимизации программы, особенно если она часто работает с запросами, связанные с записью или чтением диска.
Суть ассинхронного программирования такова — пока выполняется что-то одно, долгое, программа не останавливается, а продолжает выполнять свои задачи.
Для примера — пока вы ждёте приготовление торта (ожидание ответа от сервера) вы можете расставить тарелки (подготовка данных).
Самая популярная библиотека для данных задач — asyncio. Скачать её можно по следующей команде:
pip install asyncio
⚡️ Пример асинхроного программирования
Первым делом импортируем библиотеки: asyncio и aiohttp — она используется для асинхроного создания запросов.
После этого создаём функции с ожиданием и отправкой запроса.
Используя get_event_loop() получаем цикл, в котором работает ayncio, создаём список задач, используя create_task(func).
После этого, с помощью run_until_complete(asyncio.wait(tasks)) запускаем цикл и ожидаем его выполнения и закрываем цикл — close().
Скачайте код по ссылке ниже, чтобы увидеть результат.
💾 Скачать пример кода
Первым делом импортируем библиотеки: 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) — форматирование строки. Очень удобный инструмент: он улучшает читабельность кода и упрощает его.
💾 Скачать пример кода
Строки встречаются довольно часто во всех программах, поэтому было бы здорово уметь эффективно с ними работать.
Первое — срез.
С его помощью можно убрать некоторые элементы, причём не только в строках, но и в обычных списках.
Для этого следует использовать:
• someStr[1:9] — эта команда вернёт все значения от первого до девятого индекса
Также, есть несколько методов:
• replace(from, to) — метод, который заменяет все значения в списке с from на to.
• split(symbols) — метод, который позволяет разбить строку на список, используя символы, передаваемые в параметры
• format(*args, *kwargs) — форматирование строки. Очень удобный инструмент: он улучшает читабельность кода и упрощает его.
💾 Скачать пример кода
⚡️Корутины и таски в ассинхроном программировании
Корутины — это функции, определённые с помощью await или async.
Стоит отметить, что обычный вызов функции не выполняет её: для этого стоит использовать asyncio.run() или await.
Таски или задачи — те же самые корутины, но они запускаются одновременно.
Для их создания используют asyncio.create_task(), а виде параметра принимает корутину.
Для запуска программ одновременно, следует использовать asyncio.gather(*tasks).
Корутины — это функции, определённые с помощью await или async.
Стоит отметить, что обычный вызов функции не выполняет её: для этого стоит использовать asyncio.run() или await.
Таски или задачи — те же самые корутины, но они запускаются одновременно.
Для их создания используют asyncio.create_task(), а виде параметра принимает корутину.
Для запуска программ одновременно, следует использовать asyncio.gather(*tasks).
⚡ Try, except, finally
В python мы довольно часто встречаемся с ошибками: деление на ноль, IndexError или, например, не правильное преобразование.
В таких случаях поможет конструкция try. Первым делом вы пишем действия внутри, которые собираемся выполнить. В случае, если возникнет ошибка, то except «поймает» её и выполнит указанные действия.
Блок finally выполняется всегда, независимо от того, возникло исключение или нет. Его часто используют для закрытия файлов или соединений.
В python мы довольно часто встречаемся с ошибками: деление на ноль, IndexError или, например, не правильное преобразование.
В таких случаях поможет конструкция try. Первым делом вы пишем действия внутри, которые собираемся выполнить. В случае, если возникнет ошибка, то except «поймает» её и выполнит указанные действия.
Блок finally выполняется всегда, независимо от того, возникло исключение или нет. Его часто используют для закрытия файлов или соединений.
⚡ JSON в python
JSON — JavaScript Object Notation. Это структурированные данные, понятные человеку.
Они, также называемые «словарём» часто используются при создании сайтов и игр.
Этот формат позволяет функциям «общаться» друг с другом, сохранять какие-то значения или представлять Настройки или любые другие данные, понятные пользователю.
Создать словарь можно используя фигурные скобки. Для работы с ними используют модуль json, а метод dumps превращает словарь в строку и позволяет сохранить в файл.
Также, метод load используется для декодирования и позволяет считывать значения с файла напрямую.
JSON — JavaScript Object Notation. Это структурированные данные, понятные человеку.
Они, также называемые «словарём» часто используются при создании сайтов и игр.
Этот формат позволяет функциям «общаться» друг с другом, сохранять какие-то значения или представлять Настройки или любые другие данные, понятные пользователю.
Создать словарь можно используя фигурные скобки. Для работы с ними используют модуль json, а метод dumps превращает словарь в строку и позволяет сохранить в файл.
Также, метод load используется для декодирования и позволяет считывать значения с файла напрямую.
⚡️ Пример бота на Telebot.
В одном из предыдущих постов мы упоминали про эту библиотеку. Поэтому, сейчас мы покажем пример очень просто бота, созданного с её помощью.
Начнём с того, что у нас есть файл с названием my_token.py. Внутри него хранится переменная с токеном бота, которую мы и импортируем.
Метод TeleBot() уведомляет библиотеку о создании бота, после чего можно начать создавать функции, используя декораторы.
• start_message() — отправляет сообщение стартовое сообщение с кнопками внизу
• how_message() — выбирает случайное настроение и отвечает пользователю на его основе
• bot.pooling() — приостанавливает поток и ожидает сообщения от пользователя
В одном из предыдущих постов мы упоминали про эту библиотеку. Поэтому, сейчас мы покажем пример очень просто бота, созданного с её помощью.
Начнём с того, что у нас есть файл с названием my_token.py. Внутри него хранится переменная с токеном бота, которую мы и импортируем.
Метод TeleBot() уведомляет библиотеку о создании бота, после чего можно начать создавать функции, используя декораторы.
• start_message() — отправляет сообщение стартовое сообщение с кнопками внизу
• how_message() — выбирает случайное настроение и отвечает пользователю на его основе
• bot.pooling() — приостанавливает поток и ожидает сообщения от пользователя
👍1
⚡️ Кортеж, список, множество или словарь?
В Python часто встречаются эти понятия, но не все понимают, что это такое и чем они отличаются. Поэтому...
• Список — набор элементов, который может изменяться и индексироваться.
• Кортеж — набор элементов, которые не меняются, но также индексируется. Чаще всего его используют в функциях, которые возвращают какие-то значения, но их нельзя менять.
• Множество — набор элементов, которые могут меняться (зависит от способа создания). Он не индексируется, но его отличие в том, что все элементы ни разу не повторяются.
• Словарь — набор элементов типа ключ — значение. Ключи не могут меняться и являются "индексами", также они не должны повторятся. Значения могут и меняться, и повторятся.
В Python часто встречаются эти понятия, но не все понимают, что это такое и чем они отличаются. Поэтому...
• Список — набор элементов, который может изменяться и индексироваться.
• Кортеж — набор элементов, которые не меняются, но также индексируется. Чаще всего его используют в функциях, которые возвращают какие-то значения, но их нельзя менять.
• Множество — набор элементов, которые могут меняться (зависит от способа создания). Он не индексируется, но его отличие в том, что все элементы ни разу не повторяются.
• Словарь — набор элементов типа ключ — значение. Ключи не могут меняться и являются "индексами", также они не должны повторятся. Значения могут и меняться, и повторятся.
👍1
⚡️ Классы и особые методы
Каждый раз, когда вы создаёте какой-либо класс, он наследуется от object.
Object имеет особые методы:
__init — инициализатор класса. Он вызывается тогда, когда класс создаётся.
str, repr__— возвращает класс в виде строки. Разница между ними в том, что str должен вернуть боле «красивый» вывод.
__getatribute, setattr__ — вызывается методами getattr и setattr. Позволяют получать и задавать значения переменных классов.
__doc__ — документация для пользования классом. Также её можно создать используя многострочную строку после создания класса.
Каждый раз, когда вы создаёте какой-либо класс, он наследуется от object.
Object имеет особые методы:
__init — инициализатор класса. Он вызывается тогда, когда класс создаётся.
str, repr__— возвращает класс в виде строки. Разница между ними в том, что str должен вернуть боле «красивый» вывод.
__getatribute, setattr__ — вызывается методами getattr и setattr. Позволяют получать и задавать значения переменных классов.
__doc__ — документация для пользования классом. Также её можно создать используя многострочную строку после создания класса.
⚡️ Модули в Python
Практически не существует сложных программ, написанных без использования модулей.
Модулем в Python можно считать любой файл программы, который имеет то же название, что и имя файла.
Импортировать его можно используя import, а если нужно взять какие-то определённые атрибуты — from module import attribute.
Также, если требуется создать псевдоним, стоит использовать ключевое слово as.
Для лучшего понимания, в одном из наших примеров мы уже импортировали собственные модули.
Практически не существует сложных программ, написанных без использования модулей.
Модулем в Python можно считать любой файл программы, который имеет то же название, что и имя файла.
Импортировать его можно используя import, а если нужно взять какие-то определённые атрибуты — from module import attribute.
Также, если требуется создать псевдоним, стоит использовать ключевое слово as.
Для лучшего понимания, в одном из наших примеров мы уже импортировали собственные модули.
⚡️ Использование декораторов
Декораторы — это «обёртки» для функций, которые позволяют изменить поведение функции, при этом не меняя её код.
Создаются они очень просто:
По сути, это обычные функции, которые определяют внутри себя другую функцию и возвращают только что созданный код.
Их можно использовать, например, в библиотеке Telethon, о чём мы писали тут.
Стоит отметить, что декораторы немного замедляют вызов функции, запрещают её задекорировать и слегка ухудшают отладку.
Декораторы — это «обёртки» для функций, которые позволяют изменить поведение функции, при этом не меняя её код.
Создаются они очень просто:
По сути, это обычные функции, которые определяют внутри себя другую функцию и возвращают только что созданный код.
Их можно использовать, например, в библиотеке Telethon, о чём мы писали тут.
Стоит отметить, что декораторы немного замедляют вызов функции, запрещают её задекорировать и слегка ухудшают отладку.
⚡️ Сетевые подключения в Python
На самом деле, всё проще, чем может показаться на первый взгляд. Первым делом нам надо импортировать модуль socket. Сделать это и сохранить его можно с помощью
После этого ожидаем подключения командой listen(count).
• count — это количество подключений одновременно.
• accept() — метод, который возвращает кортеж с классом соединения и адресом
Теперь нужно просто сделать клиент, используя connect(("ip", 9999)), чтобы подключиться к IP по порту 9999.
На самом деле, всё проще, чем может показаться на первый взгляд. Первым делом нам надо импортировать модуль socket. Сделать это и сохранить его можно с помощью
socket = socket.socket()
Также, для создания сервера, нужно привязать к нему порт. Воспользуемся bind(("ip", 9999)), который принимает запросы с IP. Его можно оставить пустым, если нужно пропускать любые IP. После этого ожидаем подключения командой listen(count).
• count — это количество подключений одновременно.
• accept() — метод, который возвращает кортеж с классом соединения и адресом
Теперь нужно просто сделать клиент, используя connect(("ip", 9999)), чтобы подключиться к IP по порту 9999.