Как найти абсолютное значение в Python
В Python для чисел, массивов и собственных объектов используется встроенная функция
* Как реализовать абсолютную функцию вручную.
* Как работает
* Как расширить
1. Самостоятельная реализация
Или через
Через корень:
Но проще и эффективнее пользоваться
2. Встроенная функция
🔸Для целых и вещественных чисел сохраняет тип:
🔸Для комплексных чисел возвращает модуль:
🔸Для
3. Применение к коллекциям
Если у вас список чисел, используйте списковое включение или
4. NumPy и pandas
🔸NumPy:
🔸pandas:
5. Собственные классы
Чтобы
Вывод:
🔸Для чисел
🔸Для списков применяйте
🔸NumPy и pandas позволяют вызывать
🔸Для собственных типов реализуйте
https://realpython.com/python-absolute-value/
#python
👉 @python_real
В Python для чисел, массивов и собственных объектов используется встроенная функция
abs(). В этом кратком руководстве вы узнаете:* Как реализовать абсолютную функцию вручную.
* Как работает
abs() с разными типами данных.* Как расширить
abs() для NumPy, pandas и своих классов.1. Самостоятельная реализация
def absolute_value(x):
return x if x >= 0 else -x
Или через
max:
def absolute_value(x):
return max(x, -x)
Через корень:
def absolute_value(x):
return (x**2) ** 0.5 # возвращает float
Но проще и эффективнее пользоваться
abs().2. Встроенная функция
abs()🔸Для целых и вещественных чисел сохраняет тип:
abs(-5) # 5
abs(-5.2) # 5.2
🔸Для комплексных чисел возвращает модуль:
z = 3 + 4j
abs(z) # 5.0
🔸Для
Fraction и Decimal тоже работает «из коробки»:
from fractions import Fraction
abs(Fraction(-3, 4)) # Fraction(3, 4)
from decimal import Decimal
abs(Decimal("-0.75")) # Decimal('0.75')
3. Применение к коллекциям
Если у вас список чисел, используйте списковое включение или
map:
temps = [1, -5, 3, -2]
[abs(x) for x in temps] # [1, 5, 3, 2]
list(map(abs, temps)) # [1, 5, 3, 2]
4. NumPy и pandas
🔸NumPy:
import numpy as np
arr = np.array([-1, -4, 0, 7])
abs(arr) # array([1, 4, 0, 7])
🔸pandas:
import pandas as pd
data = pd.Series([-2, 5, -3])
abs(data) # Series([2, 5, 3])
5. Собственные классы
Чтобы
abs() работал для объектов вашего класса, определите метод .__abs__():
import math
class Vector:
def __init__(self, *coords):
self.coords = coords
def __abs__(self):
return math.hypot(*self.coords)
v = Vector(3, 4)
abs(v) # 5.0
Вывод:
🔸Для чисел
abs() – оптимальный выбор.🔸Для списков применяйте
map или генератор списка.🔸NumPy и pandas позволяют вызывать
abs() прямо на массивах и DataFrame.🔸Для собственных типов реализуйте
.__abs__().https://realpython.com/python-absolute-value/
#python
👉 @python_real
❤3👍3
Определение собственной функции в Python
Функции — это фундаментальный строительный блок в Python. Они позволяют организовать код, переиспользовать его и сделать программу более читаемой. Создание собственной функции — это важный шаг на пути к более эффективной разработке.
Основы:
Функции в Python определяются с помощью ключевого слова
Теперь ты можешь вызвать функцию:
Аргументы и параметры
Ты можешь передавать данные в функцию через параметры:
Вызов:
Возврат значения
С помощью ключевого слова
Аргументы по умолчанию
Функции могут иметь параметры с значениями по умолчанию:
Именованные аргументы
Можно передавать аргументы явно по имени:
Возвращение нескольких значений
Функции могут возвращать несколько значений с помощью кортежей:
https://realpython.com/defining-your-own-python-function/
#python
👉 @python_real
Функции — это фундаментальный строительный блок в Python. Они позволяют организовать код, переиспользовать его и сделать программу более читаемой. Создание собственной функции — это важный шаг на пути к более эффективной разработке.
Основы:
def и имя функцииФункции в Python определяются с помощью ключевого слова
def, за которым следует имя функции, круглые скобки (в которых можно указать параметры), и двоеточие:
def greet():
print("Привет!")
Теперь ты можешь вызвать функцию:
greet()
Аргументы и параметры
Ты можешь передавать данные в функцию через параметры:
def greet(name):
print(f"Привет, {name}!")
Вызов:
greet("Oleg")
Возврат значения
С помощью ключевого слова
return можно вернуть результат из функции:
def add(a, b):
return a + b
result = add(3, 4)
print(result) # 7
Аргументы по умолчанию
Функции могут иметь параметры с значениями по умолчанию:
def greet(name="друг"):
print(f"Привет, {name}!")
greet() # Привет, друг!
greet("Oleg") # Привет, Oleg!
Именованные аргументы
Можно передавать аргументы явно по имени:
def describe_pet(animal, name):
print(f"У меня есть {animal}, его зовут {name}.")
describe_pet(animal="кот", name="Барсик")
Возвращение нескольких значений
Функции могут возвращать несколько значений с помощью кортежей:
def get_point():
return (3, 4)
x, y = get_point()
https://realpython.com/defining-your-own-python-function/
#python
👉 @python_real
👍3
Python 3.14. T-строки в Python: новый способ работы со строками?
Python предлагает множество способов создания строк — от обычных строк до f-строк и raw-строк. Но начиная с Python 3.12, появляется новый способ: t-строки. Это экспериментальный синтаксис, предлагаемый для улучшения интернационализации (i18n) строк.
В этом посте мы кратко рассмотрим:
🔘 Что такое t-строки?
🔘 Зачем они нужны?
🔘 Как их использовать?
Что такое t-строки?
Такой синтаксис эквивалентен:
Зачем это нужно?
В больших проектах часто нужно поддерживать несколько языков. В Python это обычно делается через
Но такой подход:
- неявный,
- подвержен ошибкам (особенно при интерполяции),
- не всегда дружелюбен к линтерам и инструментам сборки переводов.
Как это работает?
Полный пример:
Это даст тот же результат, что и с
Совместимость и текущее состояние
Пока t-строки находятся в стадии эксперимента. Они могут измениться или быть удалены в будущих релизах. Если вы работаете с интернационализацией и переводами — следите за этой фичей. Она может значительно упростить жизнь в будущем.
https://realpython.com/python-t-strings/
#python
👉 @python_real
Python предлагает множество способов создания строк — от обычных строк до f-строк и raw-строк. Но начиная с Python 3.12, появляется новый способ: t-строки. Это экспериментальный синтаксис, предлагаемый для улучшения интернационализации (i18n) строк.
В этом посте мы кратко рассмотрим:
Что такое t-строки?
t"..." — это новый синтаксис строк, похожий на f-строки, но предназначенный для упрощения перевода строк. Они позволяют использовать интерполяцию переменных и одновременно автоматически отмечать строку как подлежащую переводу.
name = "Алиса"
print(t"Привет, {name}!")
Такой синтаксис эквивалентен:
from gettext import gettext as _
name = "Алиса"
print(_("Привет, {name}!").format(name=name))
Зачем это нужно?
В больших проектах часто нужно поддерживать несколько языков. В Python это обычно делается через
gettext, где строки передаются в функцию _() и затем интерполируются вручную:
print(_("Привет, {name}!").format(name=name))
Но такой подход:
- неявный,
- подвержен ошибкам (особенно при интерполяции),
- не всегда дружелюбен к линтерам и инструментам сборки переводов.
t-строки делают этот процесс более чистым и читаемым.Как это работает?
t-строки являются экспериментальной функцией в Python 3.12, и для их использования нужно включить feature flag:
from __future__ import tstrings
Полный пример:
from __future__ import tstrings
name = "Алиса"
print(t"Привет, {name}!")
Это даст тот же результат, что и с
gettext, но с более читаемым и лаконичным синтаксисом.Совместимость и текущее состояние
Пока t-строки находятся в стадии эксперимента. Они могут измениться или быть удалены в будущих релизах. Если вы работаете с интернационализацией и переводами — следите за этой фичей. Она может значительно упростить жизнь в будущем.
https://realpython.com/python-t-strings/
#python
👉 @python_real
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Async IO в Python: что это и как с этим работать
Асинхронное программирование в Python — это подход, позволяющий выполнять несколько операций одновременно, не блокируя основной поток выполнения. Это особенно полезно для задач ввода-вывода (I/O), таких как сетевые запросы, работа с файлами и базы данных.
Ключевые понятия
* Сопрограммы (coroutines) — функции, которые можно приостанавливать и возобновлять.
* Событийный цикл (event loop) — механизм, управляющий выполнением асинхронных задач.
* await — оператор, который приостанавливает выполнение до завершения асинхронной операции.
Пример кода:
Когда использовать async?
* Когда приложение работает с большим количеством сетевых запросов.
* Для параллельного выполнения долгих операций ввода-вывода.
* Когда требуется высокая отзывчивость программы.
Когда не стоит использовать?
* Для вычислительно тяжелых задач (лучше использовать multiprocessing).
Асинхронность в Python строится вокруг
https://realpython.com/async-io-python/
#python
👉 @python_real
Асинхронное программирование в Python — это подход, позволяющий выполнять несколько операций одновременно, не блокируя основной поток выполнения. Это особенно полезно для задач ввода-вывода (I/O), таких как сетевые запросы, работа с файлами и базы данных.
Ключевые понятия
* Сопрограммы (coroutines) — функции, которые можно приостанавливать и возобновлять.
* Событийный цикл (event loop) — механизм, управляющий выполнением асинхронных задач.
* await — оператор, который приостанавливает выполнение до завершения асинхронной операции.
Пример кода:
import asyncio
async def main():
print("Начало")
await asyncio.sleep(1)
print("Конец")
asyncio.run(main())
Когда использовать async?
* Когда приложение работает с большим количеством сетевых запросов.
* Для параллельного выполнения долгих операций ввода-вывода.
* Когда требуется высокая отзывчивость программы.
Когда не стоит использовать?
* Для вычислительно тяжелых задач (лучше использовать multiprocessing).
Асинхронность в Python строится вокруг
asyncio, но есть и дополнительные библиотеки (например, aiohttp для асинхронных HTTP-запросов).https://realpython.com/async-io-python/
#python
👉 @python_real
👍5❤1
Python Mixins: мощный инструмент для повторного использования кода
В Python Mixin — это особый вид класса, который используется для расширения функционала других классов без необходимости создавать сложные иерархии наследования. Mixin-классы сами по себе, как правило, не предназначены для самостоятельного использования — они лишь добавляют дополнительное поведение.
Основная идея Mixin
Mixin — это способ «влить» функциональность в класс, комбинируя его с другими классами через множественное наследование.
Например, если у нас есть класс
Принципы проектирования Mixin-классов
1. Изолированная функциональность — Mixin должен решать только одну конкретную задачу.
2. Не самостоятельный — Mixin не предназначен для создания экземпляров напрямую.
3. Малые зависимости — Mixin не должен жёстко зависеть от конкретной реализации других классов.
4. Имя — принято добавлять суффикс
Зачем использовать Mixin
- Повторное использование кода без дублирования.
- Упрощение кода и снижение связности.
- Гибкость при расширении функционала.
Пример: добавление сериализации в JSON
Когда Mixin лучше не использовать
- Когда поведение может быть реализовано через композицию.
- Если множественное наследование приведёт к сложной и запутанной иерархии.
- Когда Mixin начинает выполнять слишком много функций.
Mixin — это мощный и элегантный способ добавлять функционал в классы Python, сохраняя код чистым и гибким. Но использовать их стоит осторожно, чтобы избежать проблем с читаемостью и сложным наследованием.
https://realpython.com/python-mixin/
#python
👉 @python_real
В Python Mixin — это особый вид класса, который используется для расширения функционала других классов без необходимости создавать сложные иерархии наследования. Mixin-классы сами по себе, как правило, не предназначены для самостоятельного использования — они лишь добавляют дополнительное поведение.
Основная идея Mixin
Mixin — это способ «влить» функциональность в класс, комбинируя его с другими классами через множественное наследование.
Например, если у нас есть класс
LoggerMixin, он может добавлять возможность логирования в любой класс, который его наследует.
class LoggerMixin:
def log(self, message):
print(f"[LOG]: {message}")
class User(LoggerMixin):
def __init__(self, name):
self.name = name
user = User("Alice")
user.log("Пользователь создан") # [LOG]: Пользователь создан
Принципы проектирования Mixin-классов
1. Изолированная функциональность — Mixin должен решать только одну конкретную задачу.
2. Не самостоятельный — Mixin не предназначен для создания экземпляров напрямую.
3. Малые зависимости — Mixin не должен жёстко зависеть от конкретной реализации других классов.
4. Имя — принято добавлять суффикс
Mixin в название.Зачем использовать Mixin
- Повторное использование кода без дублирования.
- Упрощение кода и снижение связности.
- Гибкость при расширении функционала.
Пример: добавление сериализации в JSON
import json
class ToJSONMixin:
def to_json(self):
return json.dumps(self.__dict__)
class Point(ToJSONMixin):
def __init__(self, x, y):
self.x = x
self.y = y
p = Point(4, 5)
print(p.to_json()) # {"x": 4, "y": 5}
Когда Mixin лучше не использовать
- Когда поведение может быть реализовано через композицию.
- Если множественное наследование приведёт к сложной и запутанной иерархии.
- Когда Mixin начинает выполнять слишком много функций.
Mixin — это мощный и элегантный способ добавлять функционал в классы Python, сохраняя код чистым и гибким. Но использовать их стоит осторожно, чтобы избежать проблем с читаемостью и сложным наследованием.
https://realpython.com/python-mixin/
#python
👉 @python_real
❤3👍2
📂 Как получить список всех файлов в директории на Python
Статья о том, как с помощью Python получать список файлов в директориях. Рассмотрены различные способы, включая использование модулей
Особое внимание уделено:
- Фильтрации файлов по расширению.
- Рекурсивному поиску в подпапках.
- Преимуществам каждого подхода.
https://realpython.com/get-all-files-in-directory-python/
#python
👉 @python_real
Статья о том, как с помощью Python получать список файлов в директориях. Рассмотрены различные способы, включая использование модулей
os, os.path, glob и более современного pathlib. Особое внимание уделено:
- Фильтрации файлов по расширению.
- Рекурсивному поиску в подпапках.
- Преимуществам каждого подхода.
https://realpython.com/get-all-files-in-directory-python/
#python
👉 @python_real
👍3
Getters и Setters в Python — это мощный инструмент для управления доступом к атрибутам объекта.
В статье детально рассматривается, как их использовать для инкапсуляции данных и контроля за изменениями свойств объекта.
Основные моменты:
- Объяснение, почему в Python прямой доступ к атрибутам предпочтительнее, но геттеры и сеттеры остаются важными.
- Использование декоратора
- Примеры, как эти механизмы помогают улучшить читаемость и безопасность кода.
https://realpython.com/python-getter-setter/
#python
👉 @python_real
В статье детально рассматривается, как их использовать для инкапсуляции данных и контроля за изменениями свойств объекта.
Основные моменты:
- Объяснение, почему в Python прямой доступ к атрибутам предпочтительнее, но геттеры и сеттеры остаются важными.
- Использование декоратора
@property для создания свойства с геттером и сеттером. - Примеры, как эти механизмы помогают улучшить читаемость и безопасность кода.
https://realpython.com/python-getter-setter/
#python
👉 @python_real
👍3❤1
Как использовать
Рассматриваются основные аспекты работы с этим файлом, его структура и как он помогает в управлении зависимостями, настройке инструментов и организации проектов.
Краткий обзор:
-
- Позволяет определять сборщики (build backends), такие как
- Упрощает настройку инструментов вроде
- Дает возможность управлять зависимостями и версиями пакетов.
Использование
https://realpython.com/python-pyproject-toml/
#python
👉 @python_real
pyproject.toml в PythonРассматриваются основные аспекты работы с этим файлом, его структура и как он помогает в управлении зависимостями, настройке инструментов и организации проектов.
Краткий обзор:
-
pyproject.toml появился в PEP 518 и стал стандартом для описания конфигурации Python-проектов.- Позволяет определять сборщики (build backends), такие как
setuptools или poetry.- Упрощает настройку инструментов вроде
black, mypy и pytest.- Дает возможность управлять зависимостями и версиями пакетов.
Использование
pyproject.toml делает проекты более структурированными и гибкими, особенно при работе с различными инструментами и системами сборки.https://realpython.com/python-pyproject-toml/
#python
👉 @python_real
👍2❤1
🚀 Вышла интересная статья о сравнении UV и pip - двух инструментов для управления зависимостями в Python.
pip - стандартный пакетный менеджер Python, который знаком каждому разработчику. Работает стабильно, но не отличается высокой скоростью.
UV - современная альтернатива от Astral (разработчиков Ruff). Его главная фишка - невероятная скорость. Он значительно быстрее pip и poetry благодаря продуманной архитектуре и кэшу.
В статье разбираются:
- ключевые различия в работе с зависимостями;
- производительность и удобство использования;
- примеры установки пакетов и сборки окружения;
- сценарии, где UV может полностью заменить pip.
Если вы часто работаете с Python-проектами и хотите ускорить установку библиотек, стоит присмотреться к UV.
https://realpython.com/uv-vs-pip/
#python
👉 @python_real
pip - стандартный пакетный менеджер Python, который знаком каждому разработчику. Работает стабильно, но не отличается высокой скоростью.
UV - современная альтернатива от Astral (разработчиков Ruff). Его главная фишка - невероятная скорость. Он значительно быстрее pip и poetry благодаря продуманной архитектуре и кэшу.
В статье разбираются:
- ключевые различия в работе с зависимостями;
- производительность и удобство использования;
- примеры установки пакетов и сборки окружения;
- сценарии, где UV может полностью заменить pip.
Если вы часто работаете с Python-проектами и хотите ускорить установку библиотек, стоит присмотреться к UV.
https://realpython.com/uv-vs-pip/
#python
👉 @python_real
👍3