🔥Какой браузер лучше по вашему мнению?
Anonymous Poll
30%
Chrome
29%
Firefox
14%
Opera
23%
Yandex
4%
Edge
0%
Safari
Модуль contextlib: декоратор contextmanager
Декоратор
Объяснение:
1.Код перед
2. Значение
3. Код в блоке
🐍 Python Map | Обучение
Декоратор
contextmanager
из модуля contextlib
в Python позволяет создавать контекстные менеджеры для оператора with
без необходимости писать класс и методы __enter__()
и __exit__()
. Это упрощает управление ресурсами, автоматически закрывая их после завершения блока кода.Объяснение:
1.Код перед
yield
выполняется при входе в контекст.2. Значение
yield
передаётся в блок with
, позволяя взаимодействовать с ресурсом c помощью оператора as
.3. Код в блоке
finally
выполняется при выходе из блока with
, что гарантирует закрытие ресурса, даже если произошло исключение.Декоратор contextmanager упрощает написание контекстных менеджеров, делая код компактным и удобным для чтения.
🐍 Python Map | Обучение
👍2
Модуль itertools: итератор cycle
Итератор cycle из модуля itertools позволяет бесконечно итерироваться по элементам заданного итерируемого объекта (например, списка или строки), возвращая их по одному и повторяя при достижении конца.
Синтаксис:
Где:
iterable - итерируемая последовательность
Возвращаемое значение:
бесконечный итератор
Эта функция может быть полезна для создания механизма, который чередует выполнение задач в многопоточных или многопроцессорных приложениях, обеспечивая равномерное распределение нагрузки и обработку данных.
🐍 Python Map | Обучение
Итератор cycle из модуля itertools позволяет бесконечно итерироваться по элементам заданного итерируемого объекта (например, списка или строки), возвращая их по одному и повторяя при достижении конца.
Синтаксис:
itertools.cycle(iterable)
Где:
iterable - итерируемая последовательность
Возвращаемое значение:
бесконечный итератор
Эта функция может быть полезна для создания механизма, который чередует выполнение задач в многопоточных или многопроцессорных приложениях, обеспечивая равномерное распределение нагрузки и обработку данных.
🐍 Python Map | Обучение
👍2
Библиотека Fire
Библиотека Fire — мощный инструмент от Google, который автоматически генерирует интерфейсы командной строки (CLI) из функций, классов и модулей с минимальной настройкой.
⚙️ Пример использования:
Затем можно запустить скрипт из командной строки и передать аргументы:
💾 Установка:
🔗 Ссылка на GitHub
🐍 Python Map | Обучение
Библиотека Fire — мощный инструмент от Google, который автоматически генерирует интерфейсы командной строки (CLI) из функций, классов и модулей с минимальной настройкой.
Она упрощает создание командных интерфейсов, позволяя разработчикам быстро превращать свои объекты в удобные CLI-приложения.
⚙️ Пример использования:
import fire
def greet(name: str, age: int = 18):
return f'Привет, {name}! Тебе {age} лет.'
if __name__ == '__main__':
fire.Fire(greet)
Затем можно запустить скрипт из командной строки и передать аргументы:
python script.py --name Alice --age 24
💾 Установка:
pip install fire
🔗 Ссылка на GitHub
🐍 Python Map | Обучение
👍3
Шаблонизатор Jinja
Jinja — мощный шаблонизатор для Python, используемый для генерации HTML, XML и других документов. Он широко применяется в веб-приложениях и является стандартным шаблонизатором для Flask.
Основные особенности Jinja:
- Чистота и читаемость кода
- Условные конструкции и циклы
- Наследование шаблонов
- Фильтры и макросы
Пример использования Jinja:
index.html:
🐍 Python Map | Обучение
Jinja — мощный шаблонизатор для Python, используемый для генерации HTML, XML и других документов. Он широко применяется в веб-приложениях и является стандартным шаблонизатором для Flask.
Основные особенности Jinja:
- Чистота и читаемость кода
- Условные конструкции и циклы
- Наследование шаблонов
- Фильтры и макросы
Пример использования Jinja:
from jinja2 import Environment, FileSystemLoader
# Создание среды для поиска шаблонов
env = Environment(loader=FileSystemLoader('templates'))
# Загрузка шаблона
template = env.get_template('index.html')
# Данные для шаблона
data = {'name': 'Мир'}
# Генерация HTML
output = template.render(data)
print(output)
index.html:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Привет, {{ name }}!</title>
</head>
<body>
<h1>Добро пожаловать, {{ name }}!</h1>
</body>
</html>
🐍 Python Map | Обучение
🔥3❤1✍1
Метод str.zfill()
Метод
Синтаксис:
Параметры:
-
Примеры использования:
Основные моменты:
- Метод добавляет нули только слева от строки.
- Если строка содержит знак '-' или '+', он будет расположен перед нулями.
- Это полезно для форматирования строк чисел, например, в табличных данных или выводе.
🐍 Python Map | Обучение
Метод
zfill
используется для дополнения строки нулями слева до заданной длины. Это особенно полезно при форматировании чисел, чтобы обеспечить одинаковую длину и выравнивание.Синтаксис:
str.zfill(width)
Параметры:
-
width
: Длина результирующей строки. Если строка уже длиннее указанной длины, zfill()
не изменяет её.Примеры использования:
num = "42"
print(num.zfill(5)) # Вывод: 00042
neg_num = "-3"
print(neg_num.zfill(4)) # Вывод: -003
pos_num = "+5"
print(pos_num.zfill(4)) # Вывод: +005
big_num = "1234"
print(big_num.zfill(3)) # Вывод: 1234
Основные моменты:
- Метод добавляет нули только слева от строки.
- Если строка содержит знак '-' или '+', он будет расположен перед нулями.
- Это полезно для форматирования строк чисел, например, в табличных данных или выводе.
🐍 Python Map | Обучение
Python Map | Обучение
Метод str.zfill() Метод zfill используется для дополнения строки нулями слева до заданной длины. Это особенно полезно при форматировании чисел, чтобы обеспечить одинаковую длину и выравнивание. Синтаксис: str.zfill(width) Параметры: - width: Длина результирующей…
Вот ещё один пример использования
🐍 Python Map | Обучение | #ЕГЭ
str.zfill
(может пригодиться на ЕГЭ по информатике)ip = '253.189.9.182'.split('.')
print('.'.join(bin(int(x))[2:].zfill(8) for x in ip))
# 11111101.10111101.00001001.10110110
🐍 Python Map | Обучение | #ЕГЭ
🔥1
Модуль functools: декоратор singledispatch
Особенности:
1. Основное предназначение: Создание базовой функции с различными реализациями для разных типов аргументов.
2. Применение: Декоратор применяется к функции, с помощью метода
3. Использование с пользовательскими классами: Можно регистрировать функции для собственных типов и классов.
4. Преимущества:
- Избегает множества условий
- Упрощает поддержку кода при добавлении новых типов.
🐍 Python Map | Обучение
singledispatch
— это декоратор из модуля functools
в Python, который позволяет создавать функции с перегрузкой на основе типа аргумента. Он позволяет определить одну и ту же функцию для разных типов данных, что делает код более чистым.Особенности:
1. Основное предназначение: Создание базовой функции с различными реализациями для разных типов аргументов.
2. Применение: Декоратор применяется к функции, с помощью метода
.register()
можно добавлять реализации для других типов.3. Использование с пользовательскими классами: Можно регистрировать функции для собственных типов и классов.
4. Преимущества:
- Избегает множества условий
if
и elif
.- Упрощает поддержку кода при добавлении новых типов.
Таким образом, singledispatch является мощным инструментом для реализации полиморфизма в Python, позволяя элегантно обрабатывать различные типы данных в одной функции.
🐍 Python Map | Обучение
🔥3
Модуль Pydantic
Pydantic — библиотека для Python, предназначенная для создания и валидации данных. Она позволяет определять схемы данных с помощью классов и аннотаций типов, что делает код более читаемым и надежным.
📝 Особенности:
1. Валидация данных
2. Аннотации типов
3. Поддержка вложенных моделей
4. Автоматическое преобразование типов
5. Поддержка JSON
⚙️ Пример использования:
⬇️ Установка библиотеки:
🐍 Python Map | Обучение
Pydantic — библиотека для Python, предназначенная для создания и валидации данных. Она позволяет определять схемы данных с помощью классов и аннотаций типов, что делает код более читаемым и надежным.
📝 Особенности:
1. Валидация данных
2. Аннотации типов
3. Поддержка вложенных моделей
4. Автоматическое преобразование типов
5. Поддержка JSON
⚙️ Пример использования:
from pydantic import BaseModel
class User(BaseModel):
id: int
name: str
email: str
user = User(id=1, name="Иван", email="[email protected]")
print(user)
⬇️ Установка библиотеки:
pip install pydantic
Pydantic особенно полезен в приложениях, требующих строгой валидации данных, таких как веб-приложения с API.
🐍 Python Map | Обучение
✍2
Генераторы
Генераторы — это итераторы, которые создают последовательности значений на лету с помощью ключевого слова yield, обеспечивая эффективное использование памяти и упрощая работу с большими объемами данных.
🔍 Основные особенности:
1. Генератор — функция, возвращающая объект-генератор. Вместо
2. При вызове генератора выполнение начинается с первой строки. При
3. Генераторы можно использовать в циклах
🎯 Преимущества генераторов:
- Экономия памяти: Генераторы создают значения по мере необходимости, не храня их в памяти.
- Упрощение кода: Позволяют писать более чистый и понятный код, особенно с большими данными или бесконечными последовательностями.
🐍 Python Map | Обучение
Генераторы — это итераторы, которые создают последовательности значений на лету с помощью ключевого слова yield, обеспечивая эффективное использование памяти и упрощая работу с большими объемами данных.
🔍 Основные особенности:
1. Генератор — функция, возвращающая объект-генератор. Вместо
return
используется yield
для поочередного возвращения значений, сохраняя состояние между вызовами.2. При вызове генератора выполнение начинается с первой строки. При
yield
функция возвращает значение и приостанавливает выполнение, продолжая с этой строки при следующем вызове.3. Генераторы можно использовать в циклах
for
для удобной итерации по значениям.🎯 Преимущества генераторов:
- Экономия памяти: Генераторы создают значения по мере необходимости, не храня их в памяти.
- Упрощение кода: Позволяют писать более чистый и понятный код, особенно с большими данными или бесконечными последовательностями.
🐍 Python Map | Обучение
🔥2
Функция locals()
Функция
👀 Смотрите также: nonlocal, global
Когда это полезно?
* Отладка:
* Динамическое создание кода: Может использоваться для генерации имен переменных во время выполнения, хотя это не лучший стиль программирования из-за сложности и снижения читаемости.
* Проверка состояния: Позволяет проверить, какие переменные существуют в определённой области видимости.
🐍 Python Map | Обучение
Функция
locals()
в Python возвращает словарь, содержащий все локальные переменные текущей области видимости. Ключи этого словаря — имена переменных, а значения — соответствующие им объекты.👀 Смотрите также: nonlocal, global
Когда это полезно?
* Отладка:
locals()
помогает инспектировать состояние локальных переменных в определённой точке выполнения кода.* Динамическое создание кода: Может использоваться для генерации имен переменных во время выполнения, хотя это не лучший стиль программирования из-за сложности и снижения читаемости.
* Проверка состояния: Позволяет проверить, какие переменные существуют в определённой области видимости.
🐍 Python Map | Обучение
❤2
Модуль sys: функция intern
Функция
👀 Смотрите также: is vs ==
Как работает sys.intern?
При вызове
Когда использовать sys.intern?
* При обработке больших наборов данных с повторяющимися строками для снижения потребления памяти.
* При частом сравнении строк для ускорения процесса, так как сравнение ссылок быстрее, чем сравнение содержимого.
* В ситуациях, когда критична производительность, для улучшения скорости работы программы.
🐍 Python Map | Обучение
Функция
sys.intern
оптимизирует хранение строк в памяти, сохраняя только одну копию строки. Это снижает потребление памяти, особенно при работе с множеством одинаковых строк.👀 Смотрите также: is vs ==
Как работает sys.intern?
При вызове
sys.intern(string)
Python проверяет, существует ли уже интернированная версия строки. Если да, возвращается ссылка на неё; если нет, строка интернируется, и создаётся новая ссылка. Все интернированные строки с одинаковым содержимым будут ссылаться на одну область памяти.Когда использовать sys.intern?
* При обработке больших наборов данных с повторяющимися строками для снижения потребления памяти.
* При частом сравнении строк для ускорения процесса, так как сравнение ссылок быстрее, чем сравнение содержимого.
* В ситуациях, когда критична производительность, для улучшения скорости работы программы.
🐍 Python Map | Обучение
🔥3
Python Map | Обучение
Photo
Сложная сортировка
В Python сортировка по нескольким критериям осуществляется с помощью функции
Переданная функция вычисляет результат для каждого элемента последовательности, который используется для сравнения элементов при сортировке.
Например, у вас есть список кортежей с информацией о людях:
Чтобы отсортировать по возрасту (возрастание) и затем по имени (алфавитно), используйте:
В этом примере
Для сортировки по возрасту (убывание) и имени (алфавитно):
Знак
🐍 Python Map | Обучение
В Python сортировка по нескольким критериям осуществляется с помощью функции
sorted()
или метода sort() с параметром key
, который принимает функцию.Переданная функция вычисляет результат для каждого элемента последовательности, который используется для сравнения элементов при сортировке.
Например, у вас есть список кортежей с информацией о людях:
people = [
('Bob', 30, 'New York'),
('Alice', 25, 'Los Angeles'),
('Charlie', 30, 'Chicago'),
('David', 25, 'New York')
]
Чтобы отсортировать по возрасту (возрастание) и затем по имени (алфавитно), используйте:
sorted(people, key=lambda person: (person[1], person[0]))
В этом примере
lambda person: (person[1], person[0])
— анонимная функция, возвращающая кортежи (возраст, имя) для сортировки. Сначала сравниваются возрасты, затем при равных возрастах — имена.Для сортировки по возрасту (убывание) и имени (алфавитно):
sorted(people, key=lambda person: (-person[1], person[0]))
Знак
-
перед person[1]
обеспечивает сортировку по возрасту в убывающем порядке.Этот подход работает не только с кортежами, но и с другими типами данных, главное — чтобы функция возвращала сравнимые значения (числа, строки, кортежи и т.д.). В более сложных случаях может потребоваться создание отдельной функции в качестве ключа для повышения читаемости кода.
🐍 Python Map | Обучение
👍3🤝1
Моржовый оператор
Моржовый оператор (walrus operator) в Python — это синтаксическая конструкция
👀 Смотрите также: деструктурирующее присваивание
Пример 1:
Пример 2:
🐍 Python Map | Обучение
Моржовый оператор (walrus operator) в Python — это синтаксическая конструкция
:=
, которая позволяет присваивать значения переменным внутри выражений. Он был добавлен в Python 3.8. Его основное преимущество — сокращение кода, особенно полезное в циклах while и условных выражениях, где требуется проверка условия и одновременное присваивание значения.
👀 Смотрите также: деструктурирующее присваивание
Пример 1:
# Без моржового оператора
length = len(some_str)
if length > 10:
print('Строка длиннее 10 символов')
# С моржовым оператором
if (length := len(some_str)) > 10:
print('Строка длиннее 10 символов')
Пример 2:
# Без моржового оператора
total, num = 0, input('Введите число "#" для завершения: ')
while num != '#':
total += int(num)
num = input('Введите число "#" для завершения: ')
print(f'Сумма введенных чисел: {total}')
# С моржовым оператором
total = 0
while (num := input('Введите число "#" для завершения: ')) != '#':
total += int(num)
print(f'Сумма введенных чисел: {total}')
🐍 Python Map | Обучение