Python академия. Учи Python быстро и легко. По всем вопросам @evgenycarter
Блок else в циклах.
Блок else в циклах for и while — это конструкция, которая позволяет выполнить определенный блок кода только в случае, если цикл завершился без использования оператора break. В цикле while условие проверяется перед каждой итерацией, и если оно истинно, то выполняется тело цикла. Цикл выполняется до тех пор, пока условие не станет ложным. В случае цикла for, он проходит по элементам последовательности (например, списку) и выполняет указанный блок кода для каждого элемента.
Давайте рассмотрим пример использования блока else в цикле for. Предположим, у нас есть функция find_needle, которая принимает на вход список haystack и элемент needle, и ищет needle в haystack. Мы хотим вывести сообщение, если элемент needle не найден в haystack. Для этого мы можем использовать цикл for для прохода по элементам haystack и проверки на равенство с needle. Если элемент найден, мы выводим сообщение и прерываем цикл с помощью оператора break. Если цикл завершается без прерывания, то выполняется блок else.
def find_needle(haystack, needle):
for item in haystack:
if item == needle:
print("Needle found!")
break
else:
print("Needle not found in haystack.")
Ведем набор учеников 3-10 классов на новый учебный год!
Московская школа программистов - это не курсы, а школа с государственной лицензией, которая обучает детей IT с 2001 года. Мы сотрудничаем с МФТИ, НИУ ВШЭ, Яндекс и Физтехпарк
Что получит ребенок, в результате обучения:
- Участие и победы в олимпиадах всероссийского и международного уровня
- Поступление в престижные технические вузы России и работу в известных IT-компаниях: Apple, Google, Yandex, Nvidia и других
- Практику на реальных IT-проектах
- Усидчивость, целеустремленность и умение работать в команде
- Сдача ЕГЭ/ОГЭ на высокие баллы
Сейчас идет набор в виртуальный класс. В этом формате, дети в небольших группах обучаются с преподавателем онлайн в реальном времени.
Эффективно как очно.
Позаботьтесь о том, чтобы ребенок стал востребованным IT-специалистом!
Зарегистрироваться
#реклама 16+
vc.informatics.ru
О рекламодателе
Создаём свой контекстный менеджер
Привет, в четверг на канале вышел небольшой пост про контекстные менеджеры. Сейчас разберём, как их можно реализовать.
В любом контекстном менеджере должны быть определены методы __enter__ и __exit__. В качестве примера создадим подобие уже существующего open.
Метод __enter__ вызывается автоматически и возвращает объект файла. После того, как блок with заканчивается, также вызывается метод __exit__, который закрывает файл.
А более подробно мы рассказываем про эту тему в нашем курсе по продвинутым темам.
Подписывайтесь на канал 👉@pythonofff
Использование time.sleep() в threading
Python Logging Cookbook является хорошим примером использования time.sleep(). Модуль логирования logging является потоко-безопасным, поэтому в данном примере он будет полезнее, чем операторы print().
Здесь для создания двух потоков используется модуль Python threading. Также создается объект входа, что будет вводить threadName в stdout. Затем начинаются оба потока и инициируется цикл для каждого входа из главного потока. Для фиксирования пользователя используется KeyboardInterrupt при нажатии ^Ctrl+C.
Подписывайтесь на канал 👉@pythonofff
.
Пожалуйста, не игнорируйте наше приглашение!
Сегодня мы хотим поделиться полезной подборкой каналов, которые могут быть вам полезными.
Скорее выбирайте категорию:
Срок действия приглашений всего 1 час!
✅Вяжем шапки,варежки,свитера - t.me/+Hdmk0q50F2pkZTQy
✅АМИГУРУМИ-Вяжем игрушки- t.me/+VmvP1ECGDHxkODA6
✅ Вязание(видео-уроки) - t.me/+m6L00g4STpszYWJi
✅Вяжем детям- t.me/+ksSjU7lzERw0MzYy
✅Вязание для новичков- t.me/+0sfy52JoKXExODZi
Вяжем носочки- t.me/+HFXLXcKLa0cwMWMy
Вязание крючком- t.me/+uPHYFp-PVuFkOTIy
Вязание спицами- t.me/+9hwOHqLS0VA3ZjRi
Узоры крючком- t.me/+DL6dsn4DQGsyNTRi
Узоры спицами- t.me/+iwAtESzRlnw2ZjAy
Схемы вязания- t.me/+wMa55NfPqWoxOWVi
Бесплатные выкройки, уроки шитья - t.me/+NDrsreeCCEIwM2Qy
Шитье для новичков- t.me/+472nw5vr3b05ZDgy
Узнать больше
#реклама
О рекламодателе
Хеширование паролей Python
Для Python 3.x
Здесь пароли будут хешироваться для последующего сохранения в базе данных.
Тут мы будем использовать salt. salt является случайной последовательностью, добавленной к строке пароля перед использованием хеш-функции.
salt используется для предотвращения перебора по словарю (dictionary attack) и атак радужной таблицы (rainbow tables attacks).
Подписывайтесь на канал 👉@pythonofff
Функции высшего порядка в Python
Функции высшего порядка в Python позволяют улучшить структуру кода, делая его более понятным и гибким. Они позволяют передавать функции как аргументы в другие функции и возвращать функции как результат выполнения другой функции. Такой подход делает код более модульным и упрощает его поддержку и расширение.
Пример использования функций высшего порядка — это создание функции, которая принимает другую функцию в качестве аргумента. Например, мы можем создать функцию, которая принимает функцию для преобразования элементов списка. Затем мы можем передать эту функцию в качестве аргумента и применить ее к каждому элементу списка. Это позволяет нам легко изменять способ преобразования элементов без изменения основного кода.
def apply_function_to_list(func, lst):
return [func(x) for x in lst]
def square(x):
return x * x
numbers = [1, 2, 3, 4, 5]
squared_numbers = apply_function_to_list(square, numbers)
print(squared_numbers) # Output: [1, 4, 9, 16, 25]
apply_function_to_list
, которая принимает функцию (в данном случае square) и список чисел. Функция apply_function_to_list
применяет переданную функцию к каждому элементу списка и возвращает новый список с результатами преобразования. Таким образом, мы можем легко изменять функцию, которая применяется к элементам списка, не изменяя основной код.Поиск подстроки в строке
Pегулярное выражение — это строка, задающая шаблон поиска подстрок в тексте. В Python есть встроенный модуль, позволяющий работать с регулярными выражениями, — re, который содержит функцию search. Она позволит вам найти подстроку в строке
Подписывайтесь на канал 👉@pythonofff
Декораторы в Python
Декораторы в Python — это мощный инструмент, который позволяет изменять поведение функций или классов без изменения их исходного кода. Они позволяют добавлять дополнительную функциональность к уже существующим объектам, делая код более читаемым и поддерживаемым. Декораторы можно рассматривать как функции, которые принимают другую функцию в качестве аргумента и возвращают новую функцию, обычно с расширенным или измененным поведением.
Для создания декоратора необходимо определить функцию, которая будет выполнять дополнительную логику, и применить ее к целевой функции с помощью символа @
. Например, если у нас есть функция, которую мы хотим декорировать, мы можем создать декоратор, который будет выводить время выполнения этой функции. Декоратор применяется к целевой функции, что позволяет нам измерить время ее выполнения без изменения самой функции.
import time
def timer_decorator(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"Time taken to execute {func.__name__}: {end_time - start_time} seconds")
return result
return wrapper
@timer_decorator
def some_function():
# some code here
pass
some_function()
timer_decorator
, который измеряет время выполнения целевой функции и выводит результат. Затем мы применили этот декоратор к функции some_function
с помощью символа @
. При вызове some_function
декоратор автоматически добавляет логику измерения времени выполнения, не изменяя саму функцию.Форматирование данных с помощью pprint
Модуль pprint из стандартной библиотеки Python предоставляет разработчикам удобный способ вывода сложных и вложенных объектов в более читаемом виде. В отличие от стандартной функции print, pprint автоматически форматирует данные для удобства восприятия.
Когда вы пытаетесь вывести на печать крупный или сложно-структурированный объект с помощью print, результат может быть трудночитаемым из-за отсутствия форматирования. В таких случаях модуль pprint становится настоящим must-have инструментом для разработчиков, работающих с нетривиальными структурами данных.
Пример использования pprint:
import pprint
data = {'name': 'John', 'age': 30, 'city': 'New York', 'hobbies': ['reading', 'coding', 'hiking']}
pprint.pprint(data)
Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
Библиотека Pillow (Python Imaging Library) предоставляет различные фильтры для обработки изображений. Один из параметров, который можно использовать при повороте изображения, — это resample. Этот параметр позволяет выбрать определенный фильтр, который будет применяться при изменении размера изображения. В Pillow доступны три основных фильтра: NEAREST (ближайший сосед), BILINEAR и BICUBIC.
Фильтр NEAREST является фильтром по умолчанию и работает быстро, но может привести к пикселизации и потере деталей при увеличении изображения. Фильтр BILINEAR обеспечивает более плавное увеличение и улучшенное качество по сравнению с NEAREST. Фильтр BICUBIC является наиболее точным и обеспечивает наилучшее качество изображения, сохраняя детали и сглаживая цветовые переходы.
from PIL import Image
img = Image.open('image.jpg')
resized_img = img.resize((width, height), resample=Image.BICUBIC)
resized_img.show()
Как удалить элемент массива в Python?
Вы можете использовать .remove() метод, чтобы удалить нужный элемент из массива на Python
arr = ["тест", "тест 1", "тест 2"]
arr.remove("тест 2")
# Вывод: ['тест', 'тест 1']
print(arr)
Подписывайтесь на канал 👉@pythonofff
Подборка Telegram каналов для программистов
Системное администрирование 📌
/channel/sysadmin_girl Девочка Сисадмин
/channel/srv_admin_linux Админские угодья
/channel/linux_srv Типичный Сисадмин
/channel/linux_odmin Linux: Системный администратор
/channel/devops_star DevOps Star (Звезда Девопса)
/channel/i_linux Системный администратор
/channel/linuxchmod Linux
/channel/sys_adminos Системный Администратор
/channel/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
/channel/sysadminof Книги для админов, полезные материалы
/channel/i_odmin Все для системного администратора
/channel/i_odmin_book Библиотека Системного Администратора
/channel/i_odmin_chat Чат системных администраторов
/channel/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
/channel/sysadminoff Новости Линукс Linux
1C разработка 📌
/channel/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
/channel/cpp_lib Библиотека C/C++ разработчика
/channel/cpp_knigi Книги для программистов C/C++
/channel/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
/channel/pythonofff Python академия. Учи Python быстро и легко🐍
/channel/BookPython Библиотека Python разработчика
/channel/python_real Python подборки на русском и английском
/channel/python_360 Книги по Python Rus
Java разработка 📌
/channel/BookJava Библиотека Java разработчика
/channel/java_360 Книги по Java Rus
/channel/java_geek Учим Java на примерах
GitHub Сообщество 📌
/channel/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
/channel/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
/channel/developer_mobila Мобильная разработка
/channel/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
/channel/frontend_1 Подборки для frontend разработчиков
/channel/frontend_sovet Frontend советы, примеры и практика!
/channel/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
/channel/game_devv Все о разработке игр
Библиотеки 📌
/channel/book_for_dev Книги для программистов Rus
/channel/programmist_of Книги по программированию
/channel/proglb Библиотека программиста
/channel/bfbook Книги для программистов
/channel/books_reserv Книги для программистов
БигДата, машинное обучение 📌
/channel/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
/channel/bookflow Лекции, видеоуроки, доклады с IT конференций
/channel/coddy_academy Полезные советы по программированию
/channel/rust_lib Полезный контент по программированию на Rust
/channel/golang_lib Библиотека Go (Golang) разработчика
/channel/itmozg Программисты, дизайнеры, новости из мира IT
/channel/php_lib Библиотека PHP программиста 👨🏼💻👩💻
/channel/nodejs_lib Подборки по Node js и все что с ним связано
/channel/ruby_lib Библиотека Ruby программиста
QA, тестирование 📌
/channel/testlab_qa Библиотека тестировщика
Шутки программистов 📌
/channel/itumor Шутки программистов
Защита, взлом, безопасность 📌
/channel/thehaking Канал о кибербезопасности
/channel/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
/channel/ux_web Статьи, книги для дизайнеров
Английский 📌
/channel/UchuEnglish Английский с нуля
Математика 📌
/channel/Pomatematike Канал по математике
/channel/phis_mat Обучающие видео, книги по Физике и Математике
Excel лайфхак📌
/channel/Excel_lifehack
/channel/tikon_1 Новости высоких технологий, науки и техники💡
/channel/mir_teh Мир технологий (Technology World)
Вакансии 📌
/channel/sysadmin_rabota Системный Администратор
/channel/progjob Вакансии в IT
Встроенная функция float в Python
Если строка, которую надо конвертировать в число, не является целым числом, здесь поможет метод float.
Float также можно использовать для преобразования целых чисел в числа с плавающей запятой.
В Python 2 такое преобразование необходимо, но в Python 3 целочисленное деление больше не является чем-то особенным (если вы специально не используете оператор «//»). Поэтому больше не нужно использовать float для этой цели, теперь float(x)/y можно легко заменить на x/y.
Подписывайтесь на канал 👉@pythonofff
Простой веб-фреймворк
На сегодняшний день упрощенным вариантом веб-фреймворка WSGI для Python, является Bootle.
Это своего рода файловый модуль в единственном числе не имеющий сторонних библиотек, кроме стандартной Python.
Модуль Bootle вполне реализует себя в работах как с малыми, так и большими проектами, хотя его функционал состоит не из самых обширных возможностей: обработка форм, routing, POST-routing, сервер и cookies.
Для более точного рассмотрения результата, достаточно запустить данный модуль, прописать пять строк кода и перейти по адресной строке в браузере: localhost:5000/hello/world
Подписывайтесь на канал 👉@pythonofff
Библиотека Numpy
При создании массивом мы получаем тип ndarray.
Рассмотрим наиболее часты атрибуты (не методы!) применимые к массивам:
ndim - число измерений (чаще их называют "оси") массива.
shape - размеры массива, его форма. Это кортеж натуральных чисел, показывающий длину массива по каждой оси. Для матрицы из n строк и m столбов, shape будет (n,m). Число элементов кортежа shape равно ndim.
size - количество элементов массива. Очевидно, равно произведению всех элементов атрибута shape.
dtype - объект, описывающий тип элементов массива
itemsize - размер каждого элемента массива в байтах.
data - буфер, содержащий фактические элементы массива. Обычно мы не используем этот атрибут, так как обращаться к элементам массива проще всего с помощью индексов.
Подписывайтесь на канал 👉@pythonofff
Кэширование функций
Кэширование может сэкономить время, когда связанная с вводом или выводом функция периодически вызывается с одинаковыми аргументами. Раньше приходилось создавать свою реализацию, но в Python 3.2+ появился декоратор lru_cache, который позволяет нам быстро кэшировать и вскрывать возвращаемые значения функции.
Давайте реализуем калькулятор чисел Фибоначчи с использованием кэша. Советую попробовать запустить любую рекурсивную функцию с кэшированием и без него, прирост в скорости замечается сразу.
Подписывайтесь на канал 👉@pythonofff
Крупнейший университет искусственного интеллекта
Приглашаем на бесплатный однодневный интенсив по AI!
Освой искусственный интеллект для профессионального роста: создавай нейросети, автоматизируй бизнес-задачи и зарабатывай на AI-решениях.
✨ 8 000+ студентов со всего мира
✨ 600+ AI-проектов, созданных студентами
✨ Сборная Университета — победители крупнейших AI-хакатонов России
✨ Стажировки в крупнейших компаниях России (РЖД, Ростелеком, РУДН, Совкомбанк, Самолет и другие)
✨ Трудоустраиваем выпускников в крупнейшие компании (Яндекс, ВТБ, Сбербанк, Роскосмос и другие)
Будем рады видеть тебя в наших рядах!
Узнать больше
#реклама 16+
neural-university.ru
О рекламодателе
Python Requests анализ запроса
При составлении запроса стоит иметь в виду, что перед его фактической отправкой на целевой сервер библиотека requests выполняет определенную подготовку. Подготовка запроса включает в себя такие вещи, как проверка заголовков и сериализация содержимого JSON.
Если открыть .request, можно просмотреть PreparedRequest.
Проверка PreparedRequest открывает доступ ко всей информации о выполняемом запросе. Это может быть пейлоад, URL, заголовки, аутентификация и многое другое.
Подписывайтесь на канал 👉@pythonofff
Как убрать табуляцию в python?
Вы можете использовать метод строки .replace()
lineWithTabulation = "\tLine with tabulation"
print(lineWithTabulation)
lineWithoutTabulation = lineWithTabulation.replace('\t', '')
print(lineWithoutTabulation)
# Вывод :
# Line with tabulation
# Line with tabulation
Подписывайтесь на канал 👉@pythonofff
Получи грант на обучение в Центральном университете
Прояви себя, получи грант до 2,8 млн на обучение ИТ и бизнесу в вузе.
Для школьников 10-х и 11-х классов, СПО.
Подать заявку
#реклама
apply.centraluniversity.ru
О рекламодателе
Хранение хеша и соли
Для хранения можно использовать методы JSON, SQL, CSV и даже простой текстовый файл. Убедитесь, что пароль нигде не сохранен, ведь в этом состоит главная цель — избежать необходимость сохранения действующего пароля в исходном виде.
Если вы ограничены только одним местом для хранения, можете добавить соль и пароль вместе и потом сохранить их. Можно будет разделить их во время чтения, когда вам будет известна длина соли и ключа.
Подписывайтесь на канал 👉@pythonofff
📕Открытый урок для Python-разработчиков, инженеров, QA-специалистов и специалистов по Data Science
На открытом уроке 23 января в 20:00 мск мы изучим асинхронное взаимодействие в Python на примере RabbitMQ.
📗В результате мы:
- Поговорим про асинхронное взаимодействие в микросервисной архитектуре и асинхронное программирование в Python;
- Рассмотрим практический пример построения архитектуры приложения;
- Разберемся в преимуществах и недостатках такого подхода.
Спикер Панкрашов Дмитрий — ведущий разработчик в компании-партнере вендора СЭД "Директум", 5+ лет опыта в backend-разработке, работает с Python, PHP, .NET (C#), PostgreSQL.
👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cHzBf9
📙 Все участники открытого урока получат скидку на курс "Python Developer. Professional"
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Курс по frontend-разработке с junior до middle
Стань специалистом по frontend-разработке с помощью менторов. Оставь заявку!
Узнать больше
#реклама 16+
ykul.ru
О рекламодателе
Здесь научат стильно одеваться с любыми формами!
"PLUS SIZE: Секреты Стиля" - ваш стильный компас!
Не важно, какой у вас размер, уверенность и стиль доступны каждому!👍
- Подбор модных образов, которые подчеркнут вашу уникальность. - t.me/+yvmDUxVA5GAyZjBi
- Секреты стиля и ухода, чтобы вы сияли. t.me/+yvmDUxVA5GAyZjBi
- Находки аксессуаров и одежды специально для вас. t.me/+yvmDUxVA5GAyZjBi
❤️Откройте для себя свои собственные секреты стиля!
👌Ссылка на канал t.me/+yvmDUxVA5GAyZjBi
Узнать больше
#реклама
О рекламодателе
Проверка данных при помощи декораторов
Еще один полезный метод, который может быть реализован с помощью декораторов, заключается в проверке данных до запуска декорированной функции. Очень распространенный этому пример в веб-приложении — это аутентификация пользователя. Если задача проверки/аутентификации завершается неудачно, то декорированная функция не вызывается, и вместо нее появляется ошибка.
В данном примере, декоратор only_admins ищет HTTP заголовок X-Auth-Token во входящем запросе и затем проверяет, если он совпадает с секретным токеном администратора, который для простоты мы сделали константой.
Если нет заголовка токена, или если он есть, но не совпадает, то функция abort() из Flask выполняется для генерации ответа 401 и остановки дальнейших запросов. В противном случае запрос может пройти, вызвав при этом декорированную функцию.
Обратите внимание, как в примере функции представления admin_route() используются декораторы app.route и only_admins. Это называется цепью декораторов.
Подписывайтесь на канал 👉@pythonofff
Проверка прав доступа через декораторы
Распространенным шаблоном при работе с веб-приложениями является проверка есть ли у клиента разрешение на выполнение запрашиваемого действия. Проверки включают получение значения из заголовка HTTP запроса (токен) или из cookie браузера, для идентификации клиента. Затем, когда клиент распознан, используется специальный метод для определения допустимых прав доступа у данного клиента.
Поскольку фактическая проверка разрешений зависит от приложения, здесь будет показан общий пример, в котором просто дает разрешение на выполнение запроса на основе значения из HTTP заголовка.
Подписывайтесь на канал 👉@pythonofff
Фильтры NEAREST, BILINEAR и BICUBIC в Pillow
Параметр resample можно использовать для указания определенного фильтра, который будет использоваться при поворачивании изображения.
• Image.NEAREST (ближайший сосед / по умолчанию);
• Image.BILINEAR;
• Image.BICUBIC.
С помощью фильтра Image.BICUBIC детали изображения станут более четким, чем в случае использования фильтра по умолчанию Image.NEAREST.
Небольшие различия есть, но у данной картинки они не очень видны. Но, например фильтр Image.BILINEAR сделал картинку более гладкой.
Подписывайтесь на канал 👉@pythonofff
Функции sleep() и time()
Чтобы понять смысл функции sleep(), разберём простой пример. Три строки выводятся в определённый промежуток времени – задержку обеспечивает sleep.
Сперва выводится первая строка, затем идёт функция sleep(), которая задерживает вывод на 2 секунды. Точно так же для следующего print мы используем sleep на 5 секунд.
Рассмотрим пример использования sleep() для создания промежутка времени. Мы используем функцию time(), чтобы узнать текущее время, и localtime(), чтобы получить текущие дату и время в конкретной местности. Кроме того, есть функция strftime() («string from time»), которая возвращает время в виде строки в указанном формате.
В результате интервал между двумя моментами времени составил две секунды.
Подписывайтесь на канал 👉@pythonofff
Как удалить строку из файла в Python?
filename = "test.txt"
delete_string = "строка 2"
lines = []
with open(filename, 'r') as file:
for line in file:
if line.strip() != delete_string:
lines.append(line)
with open(filename, "w") as file:
file.writelines(lines)
Подписывайтесь на канал 👉@pythonofff