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

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

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

Канал сотрудничает с рекламным сервисом @Tgpodbor_official
Download Telegram
Библиотека 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
Каждый раз лезть в документацию или все-таки за 3 месяца уверенно овладеть всеми ключевыми технологиями Data Engineering? Успейте занять последние места на курсе «Экосистема Hadoop, Spark, Hive». Старт занятий 28 мая.
После обучения вы сможете писать распределенные приложения, работать с потоками данных, обрабатывать большие объемы данных и оптимизировать приложения. Пройдите вступительный тест и присоединяйтесь к группе по спец.цене https://otus.pw/k8gx/
Базы Данных SQL

Пришло время рассказать о SQLite и python. Начнем с того, что библиотека уже установлена, чтобы импортировать:
 sqlite

Далее надо подключится к БД. Если по указанному пути не существует файла, то он будет создан. Используем метод connect(file_name)

Далее создается "курсор" - cursor, который и помогает взаимодействовать с БД.
Метод execute отправляет запросы. С помощью него, к примеру, можно создать таблицу, вставить данные или считать их.

commit - сохраняет изменения.

#Базы_Данных #SQL
Пройдите курс и через 4 месяца вы сможете выдвинуть свою кандидатуру на позицию middle-разработчика!

Во время обучения вы:
получите практику разработки микросервисной архитектуры приложения;
освоите оптимизацию запросов к базам данных;
научитесь использовать фреймворк Django для миграций;
узнаете, как правильно анализировать ошибки;
сможете собирать метрики с сервиса для оценки его работы.

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

Итогом вашей работы на курсе станет большое приложение — аналог IMDb, которое вы напишете вместе с командой. В проекте вы будете использовать микросервисы, которые разработали на курсе. А затем добавите дополнительную возможность авторизации или комментариев на выбор.
Регистрируйся по ссылке: https://clc.am/9MVq3g
Важные методы в Python, которые должен знать каждый питонист. Мы уже рассказывали про некоторые из них. Соберем на этот раз побольше и заодно освежим память.

abs() - возвращает модуль переданного параметра.

all() - функция возвращает значение True, если все элементы в итерируемом объекте - истинны. В противном случае, она возвращает значение False.

any() - функция возвращает True, если какой-либо (любой) элемент в итерируемом объекте является истинным True. В противном случае, any() возвращает значение False.

ascii() - возвращает строку, содержащую печатное представление объекта, и экранирует символы, отличные от ASCII, в строке с помощью экранирования \ x, \ u или \ U.

bin() - функция преобразует целое число в двоичную строку с префиксом 0b.
bool() - возвращает False, если значение объекта 0, в противном случае возвращает True.

eval() - это встроенная функция, используемая в Python. Функция eval анализирует аргумент выражения и оценивает его как выражение python. Проще говоря, функция eval оценивает «String» как выражение Python и возвращает результат.

exec() - встроенная функция похожая на eval, но она полностью выполняет код находящийся внутри. Ее использование может быть не безопасно. К примеру при запуске неизвестного кода. Старайтесь учитывать этот момент.

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

help() - функция предназначена для вывода документации, подробно разбирали в другом посте.
Flask

Мы уже рассказывали об этом простом фреймворке для создания сайтов. Ранее говорилось, что сильный минус - отсутствие асинхронности. Но недавно (12 мая) вышла новая версия — Flask 2.0

Все новые особенности:
- Прекращена поддержка Python версии 2. Минимальная версия Python 3.6
- Поддержка асинхронных view и других обратных вызовов
- Добавлено изменение к декораторам:
@app.post ("/ login") == @ app.route ("/ login", methods = ["POST"])
- Новая функция Config.from_file для загрузки конфигурации из файла любого формата.
- Команда flask shell включает завершение табуляции, как это делает обычная оболочка python.
- При обслуживании статических файлов браузеры будут кэшировать на основе содержимого, а не на основе 12-часового таймера. Это означает, что изменения статического содержимого, такого как стили CSS, будут немедленно отражены при перезагрузке без необходимости очистки кеша.

Наконец-то.
Серверные приложения на Kotlin — это как на Java, но быстрее и удобнее.

Как использовать этот язык для создания бэкенда?
Получите все необходимые навыки за 5 месяцев на практическом онлайн-курсе «Kotlin Backend Developer» от Otus:
— Изучите возможности и фреймворки Kotlin
— Сможете использовать корутины для асинхронного программирования
— Погрузитесь в тонкости разработки бэкенда
— Освоите востребованные инструменты Cassandra, AWS, ELK-stack и т.д.
— Реализуете 3 своих серверных приложения

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

🔥 Успейте занять место со скидкой -20% https://otus.pw/KVjv/
Базы Данных SQL

Осталось несколько важных моментов про sqlite (а вот и предыдущий пост об этом). Например, про обновление данных в таблице и собственно получение.

На языке SQL чтобы обновить таблицу мы используем подобный синтаксис:
 table 
SET name = 'new name'
WHERE id = 1

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

В SQL есть команда похожая на пайтоновский in - LIKE.

Внимание! Часто при получении данных последний элемент может быть пустым, рекомендуем делать проверку.

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