Функции sleep() и time()
Чтобы понять смысл функции
Сперва выводится первая строка, затем идёт функция
Рассмотрим пример использования
В результате интервал между двумя моментами времени составил две секунды.
Подписывайтесь на канал 👉@pythonofff
Чтобы понять смысл функции
sleep()
, разберём простой пример. Три строки выводятся в определённый промежуток времени – задержку обеспечивает sleep.Сперва выводится первая строка, затем идёт функция
sleep()
, которая задерживает вывод на 2 секунды. Точно так же для следующего print мы используем sleep на 5 секунд.Рассмотрим пример использования
sleep()
для создания промежутка времени. Мы используем функцию time()
, чтобы узнать текущее время, и localtime()
, чтобы получить текущие дату и время в конкретной местности. Кроме того, есть функция strftime()
(«string from time»), которая возвращает время в виде строки в указанном формате. В результате интервал между двумя моментами времени составил две секунды.
Подписывайтесь на канал 👉@pythonofff
Встроенная функция float в Python
Если строка, которую надо конвертировать в число, не является целым числом, здесь поможет метод
Float также можно использовать для преобразования целых чисел в числа с плавающей запятой.
В Python 2 такое преобразование необходимо, но в Python 3 целочисленное деление больше не является чем-то особенным (если вы специально не используете оператор «
Подписывайтесь на канал 👉@pythonofff
Если строка, которую надо конвертировать в число, не является целым числом, здесь поможет метод
float
.Float также можно использовать для преобразования целых чисел в числа с плавающей запятой.
В Python 2 такое преобразование необходимо, но в Python 3 целочисленное деление больше не является чем-то особенным (если вы специально не используете оператор «
//
»). Поэтому больше не нужно использовать float
для этой цели, теперь float(x)/y
можно легко заменить на x/y
.Подписывайтесь на канал 👉@pythonofff
Как прочитать определенную строку в файле на Python?
Вы можете открыть файл и читать его построчно до тех пор пока не найдете нужную строку.
Подписывайтесь на канал 👉@pythonofff
Вы можете открыть файл и читать его построчно до тех пор пока не найдете нужную строку.
lineNeeded = 5
i = 1
f = open('test.txt')
for line in f:
if i == lineNeeded:
print(line)
break
i = i + 1
Подписывайтесь на канал 👉@pythonofff
Как не просто выучить Python, а разобраться в алгоритмах и структурах данных, автоматических тестах, освоить Django и всё необходимое для качественной разработки в команде?
Например, освоить профессию на Хекслете. Курс невозможно просто «отсидеть» или «прослушать», на нём дают только самое необходимое для условий реального продакшена — доступ к Open Source проектам, базе тестовых задач для подготовки к собеседованиям, кейсы для портфолио.
Так что многие студенты получают оффер ещё во время обучения. Работодатели указывают курсы Хекслета как преимущество при найме.
Узнайте подробнее о профессии «Python-разработчик» и оцените формат школы!
Например, освоить профессию на Хекслете. Курс невозможно просто «отсидеть» или «прослушать», на нём дают только самое необходимое для условий реального продакшена — доступ к Open Source проектам, базе тестовых задач для подготовки к собеседованиям, кейсы для портфолио.
Так что многие студенты получают оффер ещё во время обучения. Работодатели указывают курсы Хекслета как преимущество при найме.
Узнайте подробнее о профессии «Python-разработчик» и оцените формат школы!
Проверка прав доступа через декораторы
Распространенным шаблоном при работе с веб-приложениями является проверка есть ли у клиента разрешение на выполнение запрашиваемого действия. Проверки включают получение значения из заголовка HTTP запроса (токен) или из cookie браузера, для идентификации клиента. Затем, когда клиент распознан, используется специальный метод для определения допустимых прав доступа у данного клиента.
Поскольку фактическая проверка разрешений зависит от приложения, здесь будет показан общий пример, в котором просто дает разрешение на выполнение запроса на основе значения из HTTP заголовка.
Подписывайтесь на канал 👉@pythonofff
Распространенным шаблоном при работе с веб-приложениями является проверка есть ли у клиента разрешение на выполнение запрашиваемого действия. Проверки включают получение значения из заголовка HTTP запроса (токен) или из cookie браузера, для идентификации клиента. Затем, когда клиент распознан, используется специальный метод для определения допустимых прав доступа у данного клиента.
Поскольку фактическая проверка разрешений зависит от приложения, здесь будет показан общий пример, в котором просто дает разрешение на выполнение запроса на основе значения из HTTP заголовка.
Подписывайтесь на канал 👉@pythonofff
Фильтры NEAREST, BILINEAR и BICUBIC в Pillow
Параметр
• Image.NEAREST (ближайший сосед / по умолчанию);
• Image.BILINEAR;
• Image.BICUBIC.
С помощью фильтра Image.BICUBIC детали изображения станут более четким, чем в случае использования фильтра по умолчанию
Небольшие различия есть, но у данной картинки они не очень видны. Но, например фильтр
Подписывайтесь на канал 👉@pythonofff
Параметр
resample
можно использовать для указания определенного фильтра, который будет использоваться при поворачивании изображения.• Image.NEAREST (ближайший сосед / по умолчанию);
• Image.BILINEAR;
• Image.BICUBIC.
С помощью фильтра Image.BICUBIC детали изображения станут более четким, чем в случае использования фильтра по умолчанию
Image.NEAREST
.Небольшие различия есть, но у данной картинки они не очень видны. Но, например фильтр
Image.BILINEAR
сделал картинку более гладкой.Подписывайтесь на канал 👉@pythonofff
Как удалить элемент массива в Python?
Вы можете использовать .remove() метод, чтобы удалить нужный элемент из массива на Python
Подписывайтесь на канал 👉@pythonofff
Вы можете использовать .remove() метод, чтобы удалить нужный элемент из массива на Python
arr = ["тест", "тест 1", "тест 2"]
arr.remove("тест 2")
# Вывод: ['тест', 'тест 1']
print(arr)
Подписывайтесь на канал 👉@pythonofff
Проверка данных при помощи декораторов
Еще один полезный метод, который может быть реализован с помощью декораторов, заключается в проверке данных до запуска декорированной функции. Очень распространенный этому пример в веб-приложении — это аутентификация пользователя. Если задача проверки/аутентификации завершается неудачно, то декорированная функция не вызывается, и вместо нее появляется ошибка.
В данном примере, декоратор
Если нет заголовка токена, или если он есть, но не совпадает, то функция
Обратите внимание, как в примере функции представления
👉@pythonofff
Еще один полезный метод, который может быть реализован с помощью декораторов, заключается в проверке данных до запуска декорированной функции. Очень распространенный этому пример в веб-приложении — это аутентификация пользователя. Если задача проверки/аутентификации завершается неудачно, то декорированная функция не вызывается, и вместо нее появляется ошибка.
В данном примере, декоратор
only_admins
ищет HTTP заголовок X-Auth-Token во входящем запросе и затем проверяет, если он совпадает с секретным токеном администратора, который для простоты мы сделали константой. Если нет заголовка токена, или если он есть, но не совпадает, то функция
abort()
из Flask выполняется для генерации ответа 401 и остановки дальнейших запросов. В противном случае запрос может пройти, вызвав при этом декорированную функцию.Обратите внимание, как в примере функции представления
admin_route(
) используются декораторы app.route
и only_admins
. Это называется цепью декораторов.👉@pythonofff
Поиск подстроки в строке
Pегулярное выражение — это строка, задающая шаблон поиска подстрок в тексте. В Python есть встроенный модуль, позволяющий работать с регулярными выражениями, —
Подписывайтесь на канал 👉@pythonofff
Pегулярное выражение — это строка, задающая шаблон поиска подстрок в тексте. В Python есть встроенный модуль, позволяющий работать с регулярными выражениями, —
re
, который содержит функцию search
. Она позволит вам найти подстроку в строкеПодписывайтесь на канал 👉@pythonofff
Станьте Python-разработчиком с нуля!
Научим вас писать программы и веб-приложения, даже если вы никогда не программировали.
Обучение на факультете включает в себя:
— актуальную программу обучения;
— интерактивные вебинары и записи занятий;
— диплом и 7 работ в портфолио;
— трудоустройство после обучения закреплено в договоре;
— разные пакеты обучения.
Переходите по ссылке, чтобы узнать подробнее о курсе и программе обучения:
https://clc.to/zMtQNA
А ещё, дарим подарки всем студентам:
— Изучение английского языка с Lingualeo! 3 месяца к Premium подписке.
— Ключ от продуктов JetBrains! Бесплатная подписка.
— Защитное решение «Лаборатории Касперского»! Пробная версия на 3 месяца.
Научим вас писать программы и веб-приложения, даже если вы никогда не программировали.
Обучение на факультете включает в себя:
— актуальную программу обучения;
— интерактивные вебинары и записи занятий;
— диплом и 7 работ в портфолио;
— трудоустройство после обучения закреплено в договоре;
— разные пакеты обучения.
Переходите по ссылке, чтобы узнать подробнее о курсе и программе обучения:
https://clc.to/zMtQNA
А ещё, дарим подарки всем студентам:
— Изучение английского языка с Lingualeo! 3 месяца к Premium подписке.
— Ключ от продуктов JetBrains! Бесплатная подписка.
— Защитное решение «Лаборатории Касперского»! Пробная версия на 3 месяца.
Хранение хеша и соли
Для хранения можно использовать методы
Если вы ограничены только одним местом для хранения, можете добавить соль и пароль вместе и потом сохранить их. Можно будет разделить их во время чтения, когда вам будет известна длина соли и ключа.
Подписывайтесь на канал 👉@pythonofff
Для хранения можно использовать методы
JSON
, SQL
, CSV
и даже простой текстовый файл. Убедитесь, что пароль нигде не сохранен, ведь в этом состоит главная цель — избежать необходимость сохранения действующего пароля в исходном виде.Если вы ограничены только одним местом для хранения, можете добавить соль и пароль вместе и потом сохранить их. Можно будет разделить их во время чтения, когда вам будет известна длина соли и ключа.
Подписывайтесь на канал 👉@pythonofff
Хеширование паролей Python
Для Python 3.x
Здесь пароли будут хешироваться для последующего сохранения в базе данных.
Тут мы будем использовать salt. salt является случайной последовательностью, добавленной к строке пароля перед использованием хеш-функции.
salt используется для предотвращения перебора по словарю (dictionary attack) и атак радужной таблицы (rainbow tables attacks).
Подписывайтесь на канал 👉@pythonofff
Для Python 3.x
Здесь пароли будут хешироваться для последующего сохранения в базе данных.
Тут мы будем использовать salt. salt является случайной последовательностью, добавленной к строке пароля перед использованием хеш-функции.
salt используется для предотвращения перебора по словарю (dictionary attack) и атак радужной таблицы (rainbow tables attacks).
Подписывайтесь на канал 👉@pythonofff
Как убрать табуляцию в python?
Вы можете использовать метод строки .replace()
Подписывайтесь на канал 👉@pythonofff
Вы можете использовать метод строки .replace()
lineWithTabulation = "\tLine with tabulation"
print(lineWithTabulation)
lineWithoutTabulation = lineWithTabulation.replace('\t', '')
print(lineWithoutTabulation)
# Вывод :
# Line with tabulation
# Line with tabulation
Подписывайтесь на канал 👉@pythonofff
Python Requests анализ запроса
При составлении запроса стоит иметь в виду, что перед его фактической отправкой на целевой сервер библиотека requests выполняет определенную подготовку. Подготовка запроса включает в себя такие вещи, как проверка заголовков и сериализация содержимого JSON.
Если открыть
Проверка PreparedRequest открывает доступ ко всей информации о выполняемом запросе. Это может быть пейлоад, URL, заголовки, аутентификация и многое другое.
Подписывайтесь на канал 👉@pythonofff
При составлении запроса стоит иметь в виду, что перед его фактической отправкой на целевой сервер библиотека requests выполняет определенную подготовку. Подготовка запроса включает в себя такие вещи, как проверка заголовков и сериализация содержимого JSON.
Если открыть
.request
, можно просмотреть PreparedRequest
.Проверка PreparedRequest открывает доступ ко всей информации о выполняемом запросе. Это может быть пейлоад, URL, заголовки, аутентификация и многое другое.
Подписывайтесь на канал 👉@pythonofff
Использование time.sleep() в threading
Python Logging Cookbook является хорошим примером использования
Здесь для создания двух потоков используется модуль Python threading. Также создается объект входа, что будет вводить threadName в stdout. Затем начинаются оба потока и инициируется цикл для каждого входа из главного потока. Для фиксирования пользователя используется KeyboardInterrupt при нажатии ^Ctrl+C.
Подписывайтесь на канал 👉@pythonofff
Python Logging Cookbook является хорошим примером использования
time.sleep()
. Модуль логирования logging является потоко-безопасным, поэтому в данном примере он будет полезнее, чем операторы print()
.Здесь для создания двух потоков используется модуль Python threading. Также создается объект входа, что будет вводить threadName в stdout. Затем начинаются оба потока и инициируется цикл для каждого входа из главного потока. Для фиксирования пользователя используется KeyboardInterrupt при нажатии ^Ctrl+C.
Подписывайтесь на канал 👉@pythonofff
Ядовитый питон. Пишем на Python простейшую малварь: локер, шифровальщик и вирус
Почему кому-то может прийти в голову писать малварь на Python? Мы сделаем это, чтобы изучить общие принципы вредоносостроения, а заодно ты попрактикуешься в использовании этого языка и сможешь применять полученные знания в других целях. К тому же малварь на Python таки попадается в дикой природе, и далеко не все антивирусы обращают на нее внимание.
Чаще всего Python применяют для создания бэкдоров в софте, чтобы загружать и исполнять любой код на зараженной машине. Так, в 2017 году сотрудники компании Dr.Web обнаружили Python.BackDoor.33, а 8 мая 2019 года был замечен Mac.BackDoor.Siggen.20. Другой троян — RAT Python крал пользовательские данные с зараженных устройств и использовал Telegram в качестве канала передачи данных.
Подписывайтесь на канал 👉@pythonofff
Почему кому-то может прийти в голову писать малварь на Python? Мы сделаем это, чтобы изучить общие принципы вредоносостроения, а заодно ты попрактикуешься в использовании этого языка и сможешь применять полученные знания в других целях. К тому же малварь на Python таки попадается в дикой природе, и далеко не все антивирусы обращают на нее внимание.
Чаще всего Python применяют для создания бэкдоров в софте, чтобы загружать и исполнять любой код на зараженной машине. Так, в 2017 году сотрудники компании Dr.Web обнаружили Python.BackDoor.33, а 8 мая 2019 года был замечен Mac.BackDoor.Siggen.20. Другой троян — RAT Python крал пользовательские данные с зараженных устройств и использовал Telegram в качестве канала передачи данных.
Подписывайтесь на канал 👉@pythonofff
Создаём свой контекстный менеджер
Привет, в четверг на канале вышел небольшой пост про контекстные менеджеры. Сейчас разберём, как их можно реализовать.
В любом контекстном менеджере должны быть определены методы
Метод
А более подробно мы рассказываем про эту тему в нашем курсе по продвинутым темам.
Подписывайтесь на канал 👉@pythonofff
Привет, в четверг на канале вышел небольшой пост про контекстные менеджеры. Сейчас разберём, как их можно реализовать.
В любом контекстном менеджере должны быть определены методы
__enter__
и __exit__
. В качестве примера создадим подобие уже существующего open.Метод
__enter__
вызывается автоматически и возвращает объект файла. После того, как блок with заканчивается, также вызывается метод __exit__
, который закрывает файл. А более подробно мы рассказываем про эту тему в нашем курсе по продвинутым темам.
Подписывайтесь на канал 👉@pythonofff
Использование Event.wait() в многопоточности Python.
Модуль
Причина, по которой здесь лучше использовать
Затем устанавливаются циклы для проверки, настроено ли событие event. Если это не так, тогда код выведет сообщение и немного подождет перед повторной проверкой. Для установки события можно воспользоваться комбинацией ^Ctrl+C. Как только событие установлено,
Подписывайтесь на канал 👉@pythonofff
Модуль
threading
предоставляет Event()
, которого можно использовать как time.sleep()
. Однако преимущество Event()
в том, что он более отзывчив. Причина в том, что когда событие установлено, программа сразу выходит из цикла. В Python с time.sleep()
коду надо будет подождать завершения вызова sleep()
до выхода из потока.Причина, по которой здесь лучше использовать
wait()
в том, что он не блокируется, в то время, как time.sleep()
блокируется. Это значит, что при использовании time.sleep()
вы заблокируете выполнение основного потока, пока тот будет ждать завершения вызова sleep(). wait()
решает данную проблему.Затем устанавливаются циклы для проверки, настроено ли событие event. Если это не так, тогда код выведет сообщение и немного подождет перед повторной проверкой. Для установки события можно воспользоваться комбинацией ^Ctrl+C. Как только событие установлено,
worker()
вернется, и цикл оборвется, завершив программуПодписывайтесь на канал 👉@pythonofff
Как перевернуть слово задом наперед в python?
Вы можете использовать [::-1] чтобы перевернуть слово задом наперед.
Подписывайтесь на канал 👉@pythonofff
Вы можете использовать [::-1] чтобы перевернуть слово задом наперед.
str_example = "тестовая строка как пример."
reversed_string = str_example[::-1]
# Вывод: .ремирп как акортс яавотсет
print(reversed_string)
Подписывайтесь на канал 👉@pythonofff
Библиотека Numpy
При создании массивом мы получаем тип ndarray.
Рассмотрим наиболее часты атрибуты (не методы!) применимые к массивам:
ndim - число измерений (чаще их называют "оси") массива.
shape - размеры массива, его форма. Это кортеж натуральных чисел, показывающий длину массива по каждой оси. Для матрицы из n строк и m столбов, shape будет (n,m). Число элементов кортежа shape равно ndim.
size - количество элементов массива. Очевидно, равно произведению всех элементов атрибута shape.
dtype - объект, описывающий тип элементов массива
itemsize - размер каждого элемента массива в байтах.
data - буфер, содержащий фактические элементы массива. Обычно мы не используем этот атрибут, так как обращаться к элементам массива проще всего с помощью индексов.
Подписывайтесь на канал 👉@pythonofff
При создании массивом мы получаем тип ndarray.
Рассмотрим наиболее часты атрибуты (не методы!) применимые к массивам:
ndim - число измерений (чаще их называют "оси") массива.
shape - размеры массива, его форма. Это кортеж натуральных чисел, показывающий длину массива по каждой оси. Для матрицы из n строк и m столбов, shape будет (n,m). Число элементов кортежа shape равно ndim.
size - количество элементов массива. Очевидно, равно произведению всех элементов атрибута shape.
dtype - объект, описывающий тип элементов массива
itemsize - размер каждого элемента массива в байтах.
data - буфер, содержащий фактические элементы массива. Обычно мы не используем этот атрибут, так как обращаться к элементам массива проще всего с помощью индексов.
Подписывайтесь на канал 👉@pythonofff
Хочешь уже перейти от теории к практике?
Всего за несколько часов ты можешь написать свою первую программу на Python без подготовки. Сомневаешься?
Убедись лично, что это реально, на специальном курсе для начинающих програмистов от GeekBrains — https://clc.to/yMBi4w
Ты сделаешь большой шаг вперед и сможешь уже более осознанно изучать материалы в сети и учиться дальше.
Дополнительно ты сможешь пройти курс по основам программирования, вспомнить или узнать азы программирования, порешать практические задания по математике и кодингу, научиться осваивать и запоминать тяжелый материал и многое другое.
Всё это в бесплатном курсе «Основы программирования». Мы открываем доступ к нашим платным программам, сегодня это абсолютно бесплатно. Переходи прямо сейчас, регистрируйся, заполняй анкету и приступай к написанию своей первой программы https://clc.to/yMBi4w
Всего за несколько часов ты можешь написать свою первую программу на Python без подготовки. Сомневаешься?
Убедись лично, что это реально, на специальном курсе для начинающих програмистов от GeekBrains — https://clc.to/yMBi4w
Ты сделаешь большой шаг вперед и сможешь уже более осознанно изучать материалы в сети и учиться дальше.
Дополнительно ты сможешь пройти курс по основам программирования, вспомнить или узнать азы программирования, порешать практические задания по математике и кодингу, научиться осваивать и запоминать тяжелый материал и многое другое.
Всё это в бесплатном курсе «Основы программирования». Мы открываем доступ к нашим платным программам, сегодня это абсолютно бесплатно. Переходи прямо сейчас, регистрируйся, заполняй анкету и приступай к написанию своей первой программы https://clc.to/yMBi4w