Как найти абсолютное значение в 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
17 июня(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.
Как это будет:
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot
Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqxMSzZ4
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
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
👍3
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
👍4❤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
14 августа (уже в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.
Как это будет:
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot
Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤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
28 августа(в четверг) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.
Как это будет:
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot
Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Как использовать
Рассматриваются основные аспекты работы с этим файлом, его структура и как он помогает в управлении зависимостями, настройке инструментов и организации проектов.
Краткий обзор:
-
- Позволяет определять сборщики (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