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

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

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

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

РКН: clck.ru/3G6pBb
Download Telegram
Регулярные выражения

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

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

Стоит обратить внимание, что не стоит перезагружать регулярки. Они достаточно прожорливы и в большинстве случаев мы сами придумываем дополнительные проблемы. К примеру для проверки мэйла достаточно данного выражения 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
Начал самостоятельно изучать Python? Хотел бы получить советы практикующих специалистов?

С 17 по 19 мая пройдёт бесплатный онлайн-интенсив Skillbox по программированию, где ты получишь полезные знания и советы практикующего специалиста, сооснователя и технического директора Lia с семилетним опытом в разработке на Python Никиты Левашова.

Подробности по ссылке: 👉 https://clck.ru/UnvxG

На занятиях мы расскажем:

🔧 как написать скрипт на Python по подбору паролей;
🔧 как работать с файлами и запросами;
🔧 как реализовать brute-force attack;
🔧 как защититься от такой атаки;
🔧 как написать консольный интерфейс.

🎁 Всех, кто дойдёт до конца и сдаст домашнее задание, ждёт подарок — электронная книга Кей Петерсон и Дэвида Колба «Век живи — век учись» издательства МИФ и подарочный сертификат на 15 000 рублей на любой курс Skillbox!
This media is not supported in your browser
VIEW IN TELEGRAM
Редактор кода VS code

Совсем недавно в посте разобрали PyCharm и VS code. Прошло не так много времени, а последний успел выпустить очень интересное расширение Inliner. Такого пока что нигде нет.

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

Расширение пока доступно только для python и js, но разработчики обещают поддержку других языков.
Библиотека Flask

По прошлым урокам понятно, что если писать html код для каждой страницы, то получится максимально неудобно. К счастью, в Flask можно использовать шаблоны. А точнее, наследовать одни страницы от других. Создайте шаблон base.html В нем укажите {% block content %}{% endblock %}. Это место, куда будет вставляться код в дочерних страницах. content можно заменить любым словом.

А на странице, чтобы она унаследовала шаблон, надо написать откуда наследуем:
 extends "base.html" %}

И сам вставочный блок, можно несколько блоков:
 block content %}
Привет
{% endblock %}

Если вы еще не читали про Flask, то самое время начать.
Базы Данных SQL

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

Специально для этого существует язык SQL. Мы будем рассматривать SQLite. Надо понимать, что библиотек работающих на нем, как и программ огромное множество, но синтаксис у всех единый. Достаточно выучить просто SQL и вы сможете спокойно перейти на более мощный PostgreSQL.

Так почему SQLite?

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

На картинке SQL код, который создает таблицу книг.

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