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

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

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

Канал сотрудничает с рекламным сервисом @Tgpodbor_official
Download Telegram
Проверка данных при помощи декораторов

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

В данном примере, декоратор only_admins ищет HTTP заголовок X-Auth-Token во входящем запросе и затем проверяет, если он совпадает с секретным токеном администратора, который для простоты мы сделали константой.

Если нет заголовка токена, или если он есть, но не совпадает, то функция abort() из Flask выполняется для генерации ответа 401 и остановки дальнейших запросов. В противном случае запрос может пройти, вызвав при этом декорированную функцию.

Обратите внимание, как в примере функции представления admin_route() используются декораторы app.route и only_admins. Это называется цепью декораторов.
Освойте программирование с нуля! Зарегистрируйтесь и получите бесплатный доступ к онлайн-курсам и интенсивам по программированию от Skillbox на 7 дней.

✔️ Познакомитесь с введением в программирование, веб-вёрсткой и профессией Go-разработчика.

✔️ Научитесь работать с макетами и форматировать код, освоите адаптивную вёрстку.

✔️ Узнаете о тестировании — одном из самых востребованных направлений в сфере IT, где не нужен опыт программирования.

✔️ Автоматически получите доступ к выбранному направлению при регистрации.

Не упустите шанс найти себя в программировании! 👉 https://clc.am/ThpcDA
Хранение хеша и соли

Для хранения можно использовать методы JSON, SQL, CSV и даже простой текстовый файл. Убедитесь, что пароль нигде не сохранен, ведь в этом состоит главная цель — избежать необходимость сохранения действующего пароля в исходном виде.

Если вы ограничены только одним местом для хранения, можете добавить соль и пароль вместе и потом сохранить их. Можно будет разделить их во время чтения, когда вам будет известна длина соли и ключа.
Как выстроить защиту продуктов и систем от кибератак?
На курсе «Специалист по информационной безопасности» от команды HackerU вы получите знания и менторство от лучших специалистов рынка, каждый день отражающих кибератаки и развивающихся в кибербезе.

Чему вы научитесь на курсе?
— Выявлять уязвимости в веб-приложениях, программах, операционных системах и почтовых серверах
— Различные способы отражения кибератак на инфраструктуру
— Администрировать сети и операционные системы и многое другое

Осталось много вопросов по специальности и карьерным возможностям? Записывайтесь на бесплатный пробный урок по кибербезопасности с экспертами курса!

Урок проходит онлайн в закрытой видеоконфе, где вы разбираете roadmap, решаете первые задачи, задаете любые вопросы и получаете ответы.

Записывайтесь на бесплатный пробный урок по ссылке: https://is.gd/PshvCW
Объединение словарей

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

Обратите внимание, что порядок имеет значение. В данном случае значение where из params переопределяет значение по умолчанию, как и должно быть.
25 000 рублей за пару часов твоего времени

Интересно? На это способен даже 15-и летний школьник, подписанный на канал «У соседа лучше».

Не важно, работаешь ты или зарабатываешь (ага), ~300$ баксов никогда не будут лишними. Особенно, если речь идет всего о паре часов твоего времени. Поверь, оно того стоит.

Подробнее:
https://t.me/joinchat/J6jRK1d1rIBlMzYy
Хеширование паролей Python
Для Python 3.x

Здесь пароли будут хешироваться для последующего сохранения в базе данных.

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

salt используется для предотвращения перебора по словарю (dictionary attack) и атак радужной таблицы (rainbow tables attacks).
Загляните в мир разработки на Python! Пройдите бесплатный интенсив Skillbox и начните осваивать один из самых распространённых языков программирования.

Регистрируйтесь: 👉 https://clc.am/Flarww.

📌 Освоите азы программирования на Python и разберёте основные элементы языка.
📌 Поработаете с библиотеками PyQT, Kivy, wxWidgets, tkinter и поймёте основы сетевого ПО.
📌 Напишете интерфейс мессенджера на Python на практических занятиях.

⭐️ Спикер интенсива — Михаил Овчинников, специалист с 17-летним опытом в области разработки высоконагруженных систем, обработки больших данных и машинного обучения.

🎁 Сдайте домашнее задание и получите сертификат стоимостью 15 000 рублей на любой онлайн-курс Skillbox!

Ждём вас в прямом эфире со 2 по 4 августа, в 19:00 по московскому времени 😉
Python Requests анализ запроса

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

Если открыть .request, можно просмотреть PreparedRequest.

Проверка PreparedRequest открывает доступ ко всей информации о выполняемом запросе. Это может быть пейлоад, URL, заголовки, аутентификация и многое другое.
Использование time.sleep() в threading

Python Logging Cookbook является хорошим примером использования time.sleep(). Модуль логирования logging является потоко-безопасным, поэтому в данном примере он будет полезнее, чем операторы print().

Здесь для создания двух потоков используется модуль Python threading. Также создается объект входа, что будет вводить threadName в stdout. Затем начинаются оба потока и инициируется цикл для каждого входа из главного потока. Для фиксирования пользователя используется KeyboardInterrupt при нажатии ^Ctrl+C.
Использование Event.wait() в многопоточности Python. 1 ч.

Модуль threading предоставляет Event(), которого можно использовать как time.sleep(). Однако преимущество Event() в том, что он более отзывчив. Причина в том, что когда событие установлено, программа сразу выходит из цикла. В Python с time.sleep() коду надо будет подождать завершения вызова sleep() до выхода из потока.
Использование Event.wait() в многопоточности Python. 2 ч.

Причина, по которой здесь лучше использовать wait() в том, что он не блокируется, в то время, как time.sleep() блокируется. Это значит, что при использовании time.sleep() вы заблокируете выполнение основного потока, пока тот будет ждать завершения вызова sleep(). wait() решает данную проблему.

Затем устанавливаются циклы для проверки, настроено ли событие event. Если это не так, тогда код выведет сообщение и немного подождет перед повторной проверкой. Для установки события можно воспользоваться комбинацией ^Ctrl+C. Как только событие установлено, worker() вернется, и цикл оборвется, завершив программу.
С 5 по 7 августа, в 19:00 по московскому времени пройдёт бесплатный интенсив по мобильной разработке на Android. Вы изучите специфику этой сферы, на практике научитесь разрабатывать структуру приложения, верстать и писать код.

Регистрируйтесь: https://clc.am/rpi7FQ

👨‍💻 Вас ждут 3 дня вебинаров от разработчика компании Arcadia, преподавателя программирования с 12-летним стажем Дениса Александрова.


Что будет на интенсиве?

💡 Введение в мобильную разработку.
💡 Освоение актуальных инструментов разработки.
💡 Обучение программированию на Kotlin и написанию нативного кода для приложений.
💡 Настройка архитектуры и интерфейса.
💡 Написание и запуск приложения с помощью Android Studio, Jetpack Compose.

🎁 Всех участников ждут подарки! Тем, кто выполнит домашнее задание, дарим сертификаты на 15 000 рублей на любой курс Skillbox, подборку полезных материалов и электронную книгу от издательства «МИФ».

Ждём вас в прямых эфирах!
Примеры использования модуля os в Python

os.chdir() и os.getcwd()

Функция os.chdir позволяет нам вносить изменения в каталоге, который мы в данный момент используем в сессии.

Если вам нужно знать, какой путь вы в данный момент используете, для этой нужно вызвать os.getcwd(). Указанный код демонстрирует нам, что мы открыли директорию по умолчанию в Пайтоне, после запуска данного кода в IDLE.

После этого мы изменили папки, при помощи os.chdir().
Не пропустите онлайн-встречу с опытным практиком из IT-сферы и академическим директором направления «Разработка информационных систем и приложений».

Приглашаем на вебинар «Дефицит на рынке разработки: что ищут работодатели, отклоняя сотни резюме? Как вам получить редкие навыки?»

Задайте свои вопросы и узнайте из первых уст:
- Какие важные скилы не найти на рынке днём с огнём?
- Какого разработчика ищут работодатели?
- Почему стоит учить Python?
- Какая роль в команде у Software Engineer?
- Насколько крутые штуки вы сможете создавать после двух лет обучения?
- В каких отраслях набирает силу спрос на сложные технологичные решения?

Расскажет Александр Долгов:
· CCO & Co-Founder в Skipp: проектирование, запуск и
сопровождение ИТ-проектов.
· 9 лет опыта в B2G и GR коммуникациях: сотрудничал с администрацией
президента РФ и правительством Москвы
· руководил направлением B2G в Skyeng

Ждём вас 5 августа (четверг) в 17:00 по МСК:
https://u.to/P6aBGw

Пожалуйста, регистрируйтесь заранее!
Примеры использования модуля os в Python (ч. 2)

os.path.join

Метод join позволяет вам совместить несколько путей при помощи присвоенного разделителя.

К примеру, в Windows, в роли разделителя выступает бэкслэш (косая черта, указывающая назад), однако в Linux функция разделителя присвоена косой черте, указывающей вперед (forward slash).

В данном примере мы совместили путь каталога и файла вместе, для получения рабочего пути. Обратите внимание на то, что метод join не указывает на то, какой результат в итоге вышел.
Научитесь организовывать процессы непрерывной интеграции и развёртывания приложения в облаке. Поймите, как перейти из разработки или системного администрирования в DevOps-инжиниринг. Участвуйте в онлайн-интенсиве: 🔜 https://clc.am/6MWR7A

✏️ Используйте шанс! Ждём в прямом эфире 9–11 августа, в 19:00 по московскому времени.

За 3 дня вы познакомитесь с методологией DevOps, разберёте все этапы переноса приложения в облако на примере «Тетриса» и получите базовые навыки для начала карьеры DevOps-инженера.

Какие знания нужны для занятий? Пригодятся базовые навыки: умение работать в командной строке и понимание Git (clone, push, pull).

🎁 Всем участникам интенсива дарим электронную книгу Кей Петерсон и Дэвида Колба «Век живи — век учись» от издательства «МИФ». А каждый, кто сдаст домашнюю работу, получит сертификат стоимостью 15 000 рублей на любой курс Skillbox.
Как обрабатывать исключения?

Обработка исключений в Пайтон – это очень просто. Потратим немного времени и напишем несколько примеров, которые их вызовут. Мы начнем с одной из самых элементарных проблем: деление на ноль.

Если мы обратимся к урокам элементарной математики, то вспомним, что на ноль делить нельзя. В Пайтоне данная операция вызовет ошибку, как мы можем видеть в примере выше. Чтобы поймать ошибку, мы завернем операцию в оператор try/except.
Создайте искусственный интеллект своими руками! Освойте новый язык программирования и прокачайте навыки. 9–11 августа, в 21:00 по московскому времени участвуйте в онлайн-интенсиве. Познакомитесь с технологиями машинного обучения и создадите чат-бота на Python.

Бесплатно!
Нужна только регистрация: 👉 https://clc.am/b1fWoQ.

✔️ Узнаете, что такое NLU и как компьютер понимает естественную речь.
✔️ Познакомитесь с основами программирования на Python.
✔️ Разберёте архитектуру «умных» чат-ботов.
✔️ Создадите чат-бота, научите его говорить и подключите к Telegram.

🎁 Все участники получат электронную книгу Кей Петерсон и Дэвида Колба «Век живи — век учись» от издательства «МИФ». А те, кто сдаст домашнее задание, — сертификаты на 15 000 рублей. Их можно будет потратить на любой курс образовательной платформы Skillbox!
Класс collections.deque

Класс deque реализует двухконечную очередь, которая поддерживает добавление и удаление элементов с обоих концов в течение О(1) времени.

Объекты deque представлены в виде двусвязных списков, что дает им превосходную производительность для входящих и выходящих элементов, но при этом у него плохая производительность O(n) при работе со случайно принимаемыми элементами в середине очереди.

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