Python School
82.2K subscribers
2.42K photos
8 videos
578 links
Уроки по Python, которые упростят вам жизнь. Без идиотских туториалов.

Наши мемы для программистов: @conhum

Сотрудничество - @alivian

Канал сотрудничает с рекламным сервисом @Tgpodbor_official

РКН: clck.ru/3G6pBb
Download Telegram
infinity

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

float('infinity') или float('inf') для получения максимально возможного числа

float('-infinity') или float('-inf') для получения минимально возможного числа.

Не работает с int, требуется использовать именно float.
hex, oct, bin

Приходилось вам раньше работать с различными системами счисления? Если да, то вы знаете, как написать программу переводящую из одной системы в другую. Пишется она довольно просто, но иногда стоит задача быстро написать код с какой-то популярной системой счисления. Обычно это двоичная, восьмеричная или шестнадцатеричная. Для всех этих систем есть встроенные функции, которые переводят в нужную нам систему!

Из 10-ричной:
hex - перевод в 16-ричную систему
oct - перевод в 8-ричную систему
bin - перевод в 2-ичную систему

А из любой системы счисления можно получить число максимально простым способом:
int(number, base)
This media is not supported in your browser
VIEW IN TELEGRAM
Dribbble теперь в Telegram!

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

Подписывайся: @Dribbble
Библиотека Flask

В прошлом посте разобрали о чем эта библиотека вообще. Рассмотрим подробнее.

Как вы уже догадались контент можно вставлять переменными. Достаточно воспользоваться форматированием строк (f"a + 1={a + 1}"). Но тогда код получится слишком огромным. Вы можете составить шаблон прямо в html коде и сохранить его как отдельную страницу. А затем при выдаче он будет просто выполнен. К примеру в файле 'index.html' будет лежать такой код: '<h1>{{name}}</h1><p>{{content}</p>'

В flask шаблонах используем {{}} вместо {} для вставки переменных. Доступны циклы и условия, но они добавляются по-другому. Об этом позже. И для выполнения года надо рендерить страницу.
Регулярные выражения

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

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

Стоит обратить внимание, что не стоит перезагружать регулярки. Они достаточно прожорливы и в большинстве случаев мы сами придумываем дополнительные проблемы. К примеру для проверки мэйла достаточно данного выражения r'\S+@\S+\.\S+' (\S+ - все не пробельные символы от 1 и более).

Самая полная регулярка для решения данной задачи написана в 5558 символов, которые никто не разберет. Лучше все же использовать простой шаблон и дополнительно проверять попыткой отправить письмо.
Хочешь углубить знания в Python-разработке и увереннее пользоваться своими навыками? Пройди бесплатный интенсив по программированию 6–8 мая в 21:00 по московскому времени!

Успей на бесплатную регистрацию: ▶️ https://clc.am/nush9Q

📍 Изучишь основы Python и начнёшь разбираться в разных типах данных, структурах, функциях и ООП.
📍 Разработаешь сервер для прослушивания подключений.
📍 Поработаешь с библиотеками PyQT, Kivy, wxWidgets, Tkinter.
📍 На практических занятиях создашь программу для обмена быстрыми сообщениями.

☝️ 3 дня тебя будет обучать специалист с семилетним опытом в разработке на Python — Никита Левашов. Он поделится практическими советами, рекомендациями и ответит на все вопросы!

⭐️ 🎁 Сдай домашнее задание и получи сертификат на 15 000 рублей на любой курс от Skillbox.
Регулярные выражения

Расскажу про еще одну функцию, которая лично мне очень нравится и помогает распарсить текст по шаблону. Метод про который я говорю - match.

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

В других случаях, кроме принятия шаблона от пользователя или другой программы, использование может быть лишним. Чаще всего данные быстрее получить через БД, предварительно сохранив их.
Как заработать в 2021 году много

Просто следите за трендами. Рост тик-тока, модные Telegram-каналы или даже пресловутый биткойн — всё это тренды, на которых можно было обогатиться. Пригодится всем сопричастным — маркетологам, smmшникам, фрилансерам, предпринимателям.

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

Автор ежедневно мониторит 90+ сайтов, общается с экспертами, ходит на закрытые тусовки, а потом рассказывает на канале про самое годное и полезное.

Короче, подписывайтесь и изучайте, потом сами себе спасибо скажете: @marketology24
Регулярные выражения

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

 repl, string, max=0)

pattern - шаблон
repl - на что заменяем
string - строка по которой ищем
max - сколько раз заменяем

Соответственно, этот метод возвращает нужную нам строку.
Регулярные выражения

Вы уже поняли, что при работе со строками модель re просто необходим. Отлаживать их очень тяжело, но все же необходимо.

В python для этого есть встроенная возможность, вы можете указать как флаг re.DEBUG. По названию видно, что данный flag помогает дебажить регулярные выражения.

Возможно кому-то данный способ может показаться неудобным. Я так же советую к использованию сайт regex101.com. В нем можно сразу создавать и проверять регулярные выражения, что очень удобно.
Библиотека Flask

Если вы работали с запросами, к примеру на библиотеке request, то знаете, что существуют несколько видов запросов.

К примеру, в браузере при получении страницы это метод GET. Когда вы отправляете пароль и логин серверу (или другие данные) - POST. Кроме этого существуют запросы сугубо для программ, а не для браузера.

Какие есть методы?
Основных 4:
GET — получение ресурса
POST — отправить данные
PUT — обновление данных
DELETE — удаление данных

Flask позволяет обрабатывать данные запросы посредством добавления аргумента methods в декоратор.
Библиотека subprocess

Данная библиотека как ни странно, помогает работать с процессами. С ней можно, к примеру, вызвать какое-то приложение. Пусть это будет командная строка.

Кроме этого, можно проверить ответ от какого-то сайта. Делается это через расчет ping.

Про еще большее количество возможностей расскажем в следующем посте.
Библиотека subprocess

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

К примеру если у вас сервер на линукс, о обязательно установлен python 2. Приведенный ниже код заменит интерпретатор python 2 на современную версию python 3:
'test.py'], executable='python3')

Мы можем так же сохранить весь ввод и ошибки или перенаправить их прямо в файл для сохранения. А можно заставить выполняться процесс в фоновом режиме или дождаться ее завершения. Последние две возможности можно использовать асинхронно с asyncio.

Обычно Popen не ждет завершения процесса, используйте wait, чтобы избежать этого.
Библиотека Flask

Как уже говорилось ранее Flask поддерживает шаблоны и код внутри html файлов. К примеру, вот общий синтаксис выполнения условия:

 if conditions_1 %}
pass
{% elif conditions_2 %}
pass
{% else %}
pass
{% endif %}

elif и else необязательны.

Также можно использовать цикл:
{% for item in items %}
pass
{% endfor %}
Библиотека subprocess

И в заключение покажем интересную и в некотором роде полезную программу, которая показывает все wi-fi сети.

Мы еще не использовали check_output, он выполняет команду и возвращает ее вывод. Похожее мы уже проделывали в прошлом посте.

Не забывайте, что иногда требуется остановить или даже "убить" процесс. Это делается методами класса Popen, а именно terminate() и kill().

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

Все знают как получать значения у словаря. Делается это почти так же, как и у списков. В квадратных скобках мы указываем ключ, по которому находим значение. Ключом может быть строка или число. Надеюсь все это знают, а кто нет смотрите код выше.

Но все забывают про еще один способ получения метод get. Иногда он очень удобен. Вторым аргументом вы можете подставить значение, которое выведется, если элемент не найден, в старом же случае будет ошибка. Выглядит примерно так:
 None)

Но если вы считаете, что перед получением необходимо провести проверку, то вы правы лишь частично. Всё зависит от задачи.

Правильно используйте инструменты.
Редактор кода

Необходимый инструмент разработчика - редактор кода. Он должен быть удобен, функционален и главное — быстр.

Что выбрать новичкам?

Новичкам я советую использовать стандартную программу. Да, вы не ослышались. Так вы не будете видеть подсказок (и будете запоминать быстрее). Но если не хотите усложнить себе жизнь, то читайте дальше.

Что брать продвинутым?

Лучшие редакторы, что существуют — PyCharm и VS code. И первый лучше. Все нужные функции сразу есть, все удобно расставлено и никаких танцев с бубном для установки. Из минусов: относительно слабые компьютеры могут испытывать проблемы.

А вот VS code очень легок и пойдет на любом ПК. И главное, что устанавливая плагины, можно сделать еще более мощную машину, но нужна ли она вам? Лично я поплясал с бубном для удобного мне вывода и дебагинга.

Есть и другие редакторы кода, но эти лучшие и предоставляют весь функционал. От себя советую PyCharm. Но если ПК не позволяет, то VS code лучшая замена.
Базы Данных

Хранить данные нужно всем. Обычно при работе программы все хранится в оперативной памяти (ОЗУ), но при перезапуске все стирается. И для запоминания информацию записывают на жесткий диск. Это и есть База Данных.

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

Еще информацию которая меняется от программы к программе можно записать в отдельный Python файл. Так нам даже не придется его открывать.

#Базы_Данных
Базы Данных (CSV)

Безусловно прошлый способ с данными в txt файле действенный, но им никто не пользуется. Обычно использую более проlвинутые БД с использованием SQL.

Вот только иногда с txt работать намного проще, а возможно и быстрее. В таком случае рекомендуем использовать формат CSV. Хороший пример - таблица из значений температуры по дням (в выходные наблюдение не велось):

Data;Monday;Tuesday;Wednesday;Wednes­day;Friday
1;1.7;2.8;14;16.9;5.0

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

#Базы_Данных #CSV
Базы Данных

Разберем подробнее библиотеку CSV. Модуль имеет два основных метода reader и writer, для чтения и записи соответственно. Не забывайте указывать кодировку, чаще всего это 'utf8'

В некоторых случаях при открытии файла рекомендуется получить одну строку, без 'n'. Делается это так: open(file, newline='')

При начале работе с csv указываем разделитель delimiter=';' и разделитель текста quotechar='"'

Чтение возвращает итерируемый объект, а записать что-то в файл можно через метод writerow.

#Базы_Данных #CSV
Базы Данных

Задавались вопросом зачем первой строчкой пишем ненужные данные? Можно же просто запомнить, где что. Наша же программа.

Но, во-первых, не забываем про уважение к коллегам, код должен быть максимально понятен. А еще можно получить вместо списка словарь и получать значения по ключу. Делается это методом DictReader для чтения и DictWriter для записи.

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

Чтение DictReader пример на картинке. А вот при записи все происходит точно так же, как и раньше, за исключением того, что применяем метод DictWriter, а затем writer.writeheader() для записи первой заглавной строки. Данные записываем методом writerow, где аргумент - словарь.

#Базы_Данных #CSV