Как в Python используется оператор +
Прежде чем приступить к методам append() и extend(), давайте посмотрим, как происходит конкатенация (объединение) списков при помощи оператора +.
Допустим, у нас есть два списка, list1 и list2, которые мы хотим объединить (то есть склеить вместе два целых списка).
Если вы внимательно прочтете приведенный выше код, вы заметите следующие вещи:
• list1 + list2 не добавляет элементы из list2 в list1.
• Вместо этого создается новый список, содержащий элементы из list1 и list2.
• В результате сами списки list1 и list2 остаются в первозданном виде.
Есть методы с использованием append() и extend().
Подписывайтесь на канал 👉@pythonofff
Прежде чем приступить к методам append() и extend(), давайте посмотрим, как происходит конкатенация (объединение) списков при помощи оператора +.
Допустим, у нас есть два списка, list1 и list2, которые мы хотим объединить (то есть склеить вместе два целых списка).
Если вы внимательно прочтете приведенный выше код, вы заметите следующие вещи:
• list1 + list2 не добавляет элементы из list2 в list1.
• Вместо этого создается новый список, содержащий элементы из list1 и list2.
• В результате сами списки list1 и list2 остаются в первозданном виде.
Есть методы с использованием append() и extend().
Подписывайтесь на канал 👉@pythonofff
👍6
Операции с комплексными числами
Для выполнения математических операций с комплексными числами в Python используется встроенный тип данных complex. Для создания комплексного числа необходимо использовать синтаксис вида a + bj, где a — действительная часть, b — мнимая часть, j — мнимая единица.
Для выполнения операций над комплексными числами можно использовать стандартные математические операторы. Например, для сложения комплексных чисел необходимо использовать оператор «+», для умножения — оператор «*».
Python также предоставляет возможность выполнения других математических операций над комплексными числами. Например, для нахождения модуля комплексного числа можно использовать функцию abs(), для получения аргумента — функцию phase().
Таким образом, Python предоставляет удобные средства для работы с комплексными числами, позволяя выполнять различные математические операции и получать необходимые характеристики комплексных чисел.
Подписывайтесь на канал 👉@pythonofff
Для выполнения математических операций с комплексными числами в Python используется встроенный тип данных complex. Для создания комплексного числа необходимо использовать синтаксис вида a + bj, где a — действительная часть, b — мнимая часть, j — мнимая единица.
# Пример создания комплексного числа
z = 3 + 4j
Для выполнения операций над комплексными числами можно использовать стандартные математические операторы. Например, для сложения комплексных чисел необходимо использовать оператор «+», для умножения — оператор «*».
# Пример сложения комплексных чисел
z1 = 3 + 4j
z2 = 1 + 2j
result = z1 + z2
print(result) # Вывод: (4+6j)
Python также предоставляет возможность выполнения других математических операций над комплексными числами. Например, для нахождения модуля комплексного числа можно использовать функцию abs(), для получения аргумента — функцию phase().
# Пример нахождения модуля и аргумента комплексного числа
z = 3 + 4j
modulus = abs(z)
argument = cmath.phase(z)
print(modulus, argument) # Вывод: 5.0 0.9272952180016122
Таким образом, Python предоставляет удобные средства для работы с комплексными числами, позволяя выполнять различные математические операции и получать необходимые характеристики комплексных чисел.
Подписывайтесь на канал 👉@pythonofff
👍3
Блок else в циклах for и while
Цикл while используется для выполнения условия до тех пор, пока оно не будет оценено как истинное.
Цикл for используется для повторения определенных строк кода в программе. Предположим, вы хотите напечатать числа до 10, вы можете сделать это, набрав 10 операторов печати или используя цикл for. Цикл for повторяет часть программы на основе последовательности.
В Python циклы for и while могут содержать блок else, который выполнится, только если цикл завершится без применения break.
Рассмотрим это на примере функции, ищущей иголку (needle) в стоге сена (haystack).
Подписывайтесь на канал 👉@pythonofff
Цикл while используется для выполнения условия до тех пор, пока оно не будет оценено как истинное.
Цикл for используется для повторения определенных строк кода в программе. Предположим, вы хотите напечатать числа до 10, вы можете сделать это, набрав 10 операторов печати или используя цикл for. Цикл for повторяет часть программы на основе последовательности.
В Python циклы for и while могут содержать блок else, который выполнится, только если цикл завершится без применения break.
Рассмотрим это на примере функции, ищущей иголку (needle) в стоге сена (haystack).
Подписывайтесь на канал 👉@pythonofff
❤4👍1
Как импортировать класс из другого файла в python?
Вы можете использовать from "<Название_Файла>" import "<Название_Класса>"
from math_function import Axe
axe = Axe(x = 10, y = 13)
print(axe.summ())
# Вывод : 23
Файл "math_function.py"
class Axe:
def __init__(self, x : int, y : int):
self.x = x
self.y = y
def summ(self):
return x + y
Подписывайтесь на канал 👉@pythonofff
Вы можете использовать from "<Название_Файла>" import "<Название_Класса>"
from math_function import Axe
axe = Axe(x = 10, y = 13)
print(axe.summ())
# Вывод : 23
Файл "math_function.py"
class Axe:
def __init__(self, x : int, y : int):
self.x = x
self.y = y
def summ(self):
return x + y
Подписывайтесь на канал 👉@pythonofff
👍3
Как удалить папку с файлами в Python?
Вы можете использовать shutil.rmtree() метод, чтобы удалить директорию со всеми файлами в ней на Python, посмотрите небольшой код ниже:
import shutil
path = "/tmp/test_folder"
# Удалить папку и все файлы в ней
shutil.rmtree(path)
Подписывайтесь на канал 👉@pythonofff
Вы можете использовать shutil.rmtree() метод, чтобы удалить директорию со всеми файлами в ней на Python, посмотрите небольшой код ниже:
import shutil
path = "/tmp/test_folder"
# Удалить папку и все файлы в ней
shutil.rmtree(path)
Подписывайтесь на канал 👉@pythonofff
Ускоряем код при помощи векторизации?
Лучшее решение — векторизация вычислений. Простыми словами: использование функций, которые поддерживают операцию над векторами.
По сути, самым лучшим способом для ускорения любого цикла - это полный отказ от него. В примере выше для работы с функцией my_func мы легко могли бы обойтись вызовом ее в цикле для каждого элемента списка, но еще проще будет использовать vectorize.
Вообще, vectorize преображает функцию таким образом, что она целиком принимает весь вектор, а не ее отдельные элементы. Только знайте, что такой прием не всегда ускорит ее в значительной степени.
Подписывайтесь на канал 👉@pythonofff
Лучшее решение — векторизация вычислений. Простыми словами: использование функций, которые поддерживают операцию над векторами.
По сути, самым лучшим способом для ускорения любого цикла - это полный отказ от него. В примере выше для работы с функцией my_func мы легко могли бы обойтись вызовом ее в цикле для каждого элемента списка, но еще проще будет использовать vectorize.
Вообще, vectorize преображает функцию таким образом, что она целиком принимает весь вектор, а не ее отдельные элементы. Только знайте, что такой прием не всегда ускорит ее в значительной степени.
Подписывайтесь на канал 👉@pythonofff
👍4
Справка по импортированным модулям
Для вывода импортированных модулей в Python вы можете использовать функцию help(). Эта функция позволяет получить справку о любом объекте, включая модули, функции, классы и т.д. Для того чтобы узнать, какие модули были импортированы в вашем коде, просто вызовите help("modules").
При вызове help("modules") Python выведет список всех импортированных модулей в вашей среде. Это может быть полезно для того, чтобы узнать, какие внешние модули нужно установить на новой системе для корректного выполнения вашего кода. Таким образом, вы сможете избежать необходимости пробовать их импортировать вручную.
Важно отметить, что при вызове help("modules") не будут перечислены модуль sys и модули, импортированные из него. Это связано с тем, что модуль sys является частью стандартной библиотеки Python и не требует установки отдельно.
Например, если вы импортировали модули requests, numpy и pandas, то при вызове help("modules") вы увидите их в списке импортированных модулей. Это позволит вам легко определить, какие внешние модули необходимо установить на другой системе для успешного запуска вашего кода.
Подписывайтесь на канал 👉@pythonofff
Для вывода импортированных модулей в Python вы можете использовать функцию help(). Эта функция позволяет получить справку о любом объекте, включая модули, функции, классы и т.д. Для того чтобы узнать, какие модули были импортированы в вашем коде, просто вызовите help("modules").
При вызове help("modules") Python выведет список всех импортированных модулей в вашей среде. Это может быть полезно для того, чтобы узнать, какие внешние модули нужно установить на новой системе для корректного выполнения вашего кода. Таким образом, вы сможете избежать необходимости пробовать их импортировать вручную.
Важно отметить, что при вызове help("modules") не будут перечислены модуль sys и модули, импортированные из него. Это связано с тем, что модуль sys является частью стандартной библиотеки Python и не требует установки отдельно.
import requests
import numpy
import pandas
Например, если вы импортировали модули requests, numpy и pandas, то при вызове help("modules") вы увидите их в списке импортированных модулей. Это позволит вам легко определить, какие внешние модули необходимо установить на другой системе для успешного запуска вашего кода.
Подписывайтесь на канал 👉@pythonofff
👍2
Как удалить строку из файла в 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
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
👍4🎉1
Простой веб-фреймворк
На сегодняшний день упрощенным вариантом веб-фреймворка WSGI для Python, является Bootle.
Это своего рода файловый модуль в единственном числе не имеющий сторонних библиотек, кроме стандартной Python.
Модуль Bootle вполне реализует себя в работах как с малыми, так и большими проектами, хотя его функционал состоит не из самых обширных возможностей: обработка форм, routing, POST-routing, сервер и cookies.
Для более точного рассмотрения результата, достаточно запустить данный модуль, прописать пять строк кода и перейти по адресной строке в браузере: localhost:5000/hello/world
Подписывайтесь на канал 👉@pythonofff
На сегодняшний день упрощенным вариантом веб-фреймворка WSGI для Python, является Bootle.
Это своего рода файловый модуль в единственном числе не имеющий сторонних библиотек, кроме стандартной Python.
Модуль Bootle вполне реализует себя в работах как с малыми, так и большими проектами, хотя его функционал состоит не из самых обширных возможностей: обработка форм, routing, POST-routing, сервер и cookies.
Для более точного рассмотрения результата, достаточно запустить данный модуль, прописать пять строк кода и перейти по адресной строке в браузере: localhost:5000/hello/world
Подписывайтесь на канал 👉@pythonofff
👍3
Функции sleep() и time()
Чтобы понять смысл функции sleep(), разберём простой пример. Три строки выводятся в определённый промежуток времени – задержку обеспечивает sleep.
Сперва выводится первая строка, затем идёт функция sleep(), которая задерживает вывод на 2 секунды. Точно так же для следующего print мы используем sleep на 5 секунд.
Рассмотрим пример использования sleep() для создания промежутка времени. Мы используем функцию time(), чтобы узнать текущее время, и localtime(), чтобы получить текущие дату и время в конкретной местности. Кроме того, есть функция strftime() («string from time»), которая возвращает время в виде строки в указанном формате.
В результате интервал между двумя моментами времени составил две секунды.
Подписывайтесь на канал 👉@pythonofff
Чтобы понять смысл функции sleep(), разберём простой пример. Три строки выводятся в определённый промежуток времени – задержку обеспечивает sleep.
Сперва выводится первая строка, затем идёт функция sleep(), которая задерживает вывод на 2 секунды. Точно так же для следующего print мы используем sleep на 5 секунд.
Рассмотрим пример использования sleep() для создания промежутка времени. Мы используем функцию time(), чтобы узнать текущее время, и localtime(), чтобы получить текущие дату и время в конкретной местности. Кроме того, есть функция strftime() («string from time»), которая возвращает время в виде строки в указанном формате.
В результате интервал между двумя моментами времени составил две секунды.
Подписывайтесь на канал 👉@pythonofff
👍3
Встроенная функция float в Python
Если строка, которую надо конвертировать в число, не является целым числом, здесь поможет метод float.
Float также можно использовать для преобразования целых чисел в числа с плавающей запятой.
В Python 2 такое преобразование необходимо, но в Python 3 целочисленное деление больше не является чем-то особенным (если вы специально не используете оператор «//»). Поэтому больше не нужно использовать float для этой цели, теперь float(x)/y можно легко заменить на x/y.
Подписывайтесь на канал 👉@pythonofff
Если строка, которую надо конвертировать в число, не является целым числом, здесь поможет метод float.
Float также можно использовать для преобразования целых чисел в числа с плавающей запятой.
В Python 2 такое преобразование необходимо, но в Python 3 целочисленное деление больше не является чем-то особенным (если вы специально не используете оператор «//»). Поэтому больше не нужно использовать float для этой цели, теперь float(x)/y можно легко заменить на x/y.
Подписывайтесь на канал 👉@pythonofff
👍3
Фильтры NEAREST, BILINEAR и BICUBIC в Pillow
Параметр resample можно использовать для указания определенного фильтра, который будет использоваться при поворачивании изображения.
• Image.NEAREST (ближайший сосед / по умолчанию);
• Image.BILINEAR;
• Image.BICUBIC.
С помощью фильтра Image.BICUBIC детали изображения станут более четким, чем в случае использования фильтра по умолчанию Image.NEAREST.
Небольшие различия есть, но у данной картинки они не очень видны. Но, например фильтр Image.BILINEAR сделал картинку более гладкой.
Подписывайтесь на канал 👉@pythonofff
Параметр resample можно использовать для указания определенного фильтра, который будет использоваться при поворачивании изображения.
• Image.NEAREST (ближайший сосед / по умолчанию);
• Image.BILINEAR;
• Image.BICUBIC.
С помощью фильтра Image.BICUBIC детали изображения станут более четким, чем в случае использования фильтра по умолчанию Image.NEAREST.
Небольшие различия есть, но у данной картинки они не очень видны. Но, например фильтр Image.BILINEAR сделал картинку более гладкой.
Подписывайтесь на канал 👉@pythonofff
👍2
Подборка Telegram каналов для программистов
Системное администрирование 📌
https://t.me/sysadmin_girl Девочка Сисадмин
https://t.me/srv_admin_linux Админские угодья
https://t.me/linux_srv Типичный Сисадмин
https://t.me/linux_odmin Linux: Системный администратор
https://t.me/devops_star DevOps Star (Звезда Девопса)
https://t.me/i_linux Системный администратор
https://t.me/linuxchmod Linux
https://t.me/sys_adminos Системный Администратор
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT
https://t.me/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
Excel лайфхак📌
https://t.me/Excel_lifehack
https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Системное администрирование 📌
https://t.me/sysadmin_girl Девочка Сисадмин
https://t.me/srv_admin_linux Админские угодья
https://t.me/linux_srv Типичный Сисадмин
https://t.me/linux_odmin Linux: Системный администратор
https://t.me/devops_star DevOps Star (Звезда Девопса)
https://t.me/i_linux Системный администратор
https://t.me/linuxchmod Linux
https://t.me/sys_adminos Системный Администратор
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT
https://t.me/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
Excel лайфхак📌
https://t.me/Excel_lifehack
https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
👍1
Проверка прав доступа через декораторы
Распространенным шаблоном при работе с веб-приложениями является проверка есть ли у клиента разрешение на выполнение запрашиваемого действия. Проверки включают получение значения из заголовка HTTP запроса (токен) или из cookie браузера, для идентификации клиента. Затем, когда клиент распознан, используется специальный метод для определения допустимых прав доступа у данного клиента.
Поскольку фактическая проверка разрешений зависит от приложения, здесь будет показан общий пример, в котором просто дает разрешение на выполнение запроса на основе значения из HTTP заголовка.
Подписывайтесь на канал 👉@pythonofff
Распространенным шаблоном при работе с веб-приложениями является проверка есть ли у клиента разрешение на выполнение запрашиваемого действия. Проверки включают получение значения из заголовка HTTP запроса (токен) или из cookie браузера, для идентификации клиента. Затем, когда клиент распознан, используется специальный метод для определения допустимых прав доступа у данного клиента.
Поскольку фактическая проверка разрешений зависит от приложения, здесь будет показан общий пример, в котором просто дает разрешение на выполнение запроса на основе значения из HTTP заголовка.
Подписывайтесь на канал 👉@pythonofff
👍3
Как удалить элемент массива в Python?
Вы можете использовать .remove() метод, чтобы удалить нужный элемент из массива на Python
arr = ["тест", "тест 1", "тест 2"]
arr.remove("тест 2")
# Вывод: ['тест', 'тест 1']
print(arr)
Подписывайтесь на канал 👉@pythonofff
Вы можете использовать .remove() метод, чтобы удалить нужный элемент из массива на Python
arr = ["тест", "тест 1", "тест 2"]
arr.remove("тест 2")
# Вывод: ['тест', 'тест 1']
print(arr)
Подписывайтесь на канал 👉@pythonofff
👍3❤2💘2
Проверка данных при помощи декораторов
Еще один полезный метод, который может быть реализован с помощью декораторов, заключается в проверке данных до запуска декорированной функции. Очень распространенный этому пример в веб-приложении — это аутентификация пользователя. Если задача проверки/аутентификации завершается неудачно, то декорированная функция не вызывается, и вместо нее появляется ошибка.
В данном примере, декоратор only_admins ищет HTTP заголовок X-Auth-Token во входящем запросе и затем проверяет, если он совпадает с секретным токеном администратора, который для простоты мы сделали константой.
Если нет заголовка токена, или если он есть, но не совпадает, то функция abort() из Flask выполняется для генерации ответа 401 и остановки дальнейших запросов. В противном случае запрос может пройти, вызвав при этом декорированную функцию.
Обратите внимание, как в примере функции представления admin_route() используются декораторы app.route и only_admins. Это называется цепью декораторов.
Подписывайтесь на канал 👉@pythonofff
Еще один полезный метод, который может быть реализован с помощью декораторов, заключается в проверке данных до запуска декорированной функции. Очень распространенный этому пример в веб-приложении — это аутентификация пользователя. Если задача проверки/аутентификации завершается неудачно, то декорированная функция не вызывается, и вместо нее появляется ошибка.
В данном примере, декоратор only_admins ищет HTTP заголовок X-Auth-Token во входящем запросе и затем проверяет, если он совпадает с секретным токеном администратора, который для простоты мы сделали константой.
Если нет заголовка токена, или если он есть, но не совпадает, то функция abort() из Flask выполняется для генерации ответа 401 и остановки дальнейших запросов. В противном случае запрос может пройти, вызвав при этом декорированную функцию.
Обратите внимание, как в примере функции представления admin_route() используются декораторы app.route и only_admins. Это называется цепью декораторов.
Подписывайтесь на канал 👉@pythonofff
👍1
Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
Библиотека Pillow (Python Imaging Library) предоставляет различные фильтры для обработки изображений. Один из параметров, который можно использовать при повороте изображения, — это resample. Этот параметр позволяет выбрать определенный фильтр, который будет применяться при изменении размера изображения. В Pillow доступны три основных фильтра: NEAREST (ближайший сосед), BILINEAR и BICUBIC.
Фильтр NEAREST является фильтром по умолчанию и работает быстро, но может привести к пикселизации и потере деталей при увеличении изображения. Фильтр BILINEAR обеспечивает более плавное увеличение и улучшенное качество по сравнению с NEAREST. Фильтр BICUBIC является наиболее точным и обеспечивает наилучшее качество изображения, сохраняя детали и сглаживая цветовые переходы.
Использование фильтра BICUBIC позволяет улучшить четкость изображения и сохранить детали при изменении размера. Например, если на изображении присутствуют тонкие линии или текст, то фильтр BICUBIC поможет сделать их более четкими и улучшить общее качество изображения. При этом фильтры BILINEAR и NEAREST также могут быть полезны в зависимости от конкретной задачи и требований к изображению.
Подписывайтесь на канал 👉@pythonofff
Библиотека 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()
Использование фильтра BICUBIC позволяет улучшить четкость изображения и сохранить детали при изменении размера. Например, если на изображении присутствуют тонкие линии или текст, то фильтр BICUBIC поможет сделать их более четкими и улучшить общее качество изображения. При этом фильтры BILINEAR и NEAREST также могут быть полезны в зависимости от конкретной задачи и требований к изображению.
Подписывайтесь на канал 👉@pythonofff
👍3
Форматирование данных с помощью pprint
Модуль pprint из стандартной библиотеки Python предоставляет разработчикам удобный способ вывода сложных и вложенных объектов в более читаемом виде. В отличие от стандартной функции print, pprint автоматически форматирует данные для удобства восприятия.
Когда вы пытаетесь вывести на печать крупный или сложно-структурированный объект с помощью print, результат может быть трудночитаемым из-за отсутствия форматирования. В таких случаях модуль pprint становится настоящим must-have инструментом для разработчиков, работающих с нетривиальными структурами данных.
Пример использования pprint:
В результате выполнения данного кода вы увидите словарь data в удобочитаемом формате, который автоматически отформатировал модуль pprint. Это значительно облегчает работу с большими и сложными структурами данных в Python.
Подписывайтесь на канал 👉@pythonofff
Модуль 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)
В результате выполнения данного кода вы увидите словарь data в удобочитаемом формате, который автоматически отформатировал модуль pprint. Это значительно облегчает работу с большими и сложными структурами данных в Python.
Подписывайтесь на канал 👉@pythonofff
👍3
Декораторы в Python
Декораторы в Python — это мощный инструмент, который позволяет изменять поведение функций или классов без изменения их исходного кода. Они позволяют добавлять дополнительную функциональность к уже существующим объектам, делая код более читаемым и поддерживаемым. Декораторы можно рассматривать как функции, которые принимают другую функцию в качестве аргумента и возвращают новую функцию, обычно с расширенным или измененным поведением.
Для создания декоратора необходимо определить функцию, которая будет выполнять дополнительную логику, и применить ее к целевой функции с помощью символа
В приведенном примере мы создали декоратор
Использование декораторов позволяет избежать дублирования кода и упрощает поддержку и анализ программы. Они также улучшают читаемость кода, поскольку дополнительная логика выносится из основной функции. Декораторы являются важной частью Python и позволяют разработчикам создавать более гибкие и масштабируемые приложения.
Подписывайтесь на канал 👉@pythonofff
Декораторы в 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
декоратор автоматически добавляет логику измерения времени выполнения, не изменяя саму функцию.Использование декораторов позволяет избежать дублирования кода и упрощает поддержку и анализ программы. Они также улучшают читаемость кода, поскольку дополнительная логика выносится из основной функции. Декораторы являются важной частью Python и позволяют разработчикам создавать более гибкие и масштабируемые приложения.
Подписывайтесь на канал 👉@pythonofff
👍3