Что делает знак плюса перед переменной в Python?
в проекте, который я должен поддерживать, есть следующий бит кода Python:
# If the `factor` decimal is given, compute new price and a delta
factor = +factor.quantize(TWOPLACES)
new_price = +Decimal(old_price * factor).quantize(TWOPLACES)
delta = new_price - old_price
вопрос здесь заключается в цели +
перед переменной.
Python docs вызов это унарный плюс оператор, который "дает свой числовой аргумент без изменений". Можно ли его безопасно удалить?
(кстати, код был написан мной некоторое время назад, надеюсь, я выучил урок-это не будет вопросом, если тесты существовал, или если использование унарного плюс на десятичном было разъяснено в комментариях.)
2 ответов
что делает этот знак плюса, зависит от того, что он определяется результатом этого выражения (этот объект __pos__()
метод называется). В этом случае это Decimal
объект, а унарный плюс эквивалентен вызову plus()
метод. В принципе, он используется для применения текущего контекста (точность, округление и т. д.) без изменения знака числа. Ищите setcontext()
или localcontext()
позвоните в другое место, чтобы узнать, что такое контекст. Для получения дополнительной информации посмотреть вот!--8-->.
унарный плюс используется не очень часто, поэтому неудивительно, что это использование незнакомо. Я думаю, что decimal
module-единственный стандартный модуль, который его использует.
Я столкнулся с этой же проблемой, когда ошибочно предположил, что Python должен поддерживать оператор c increment ( ++ ); это не так! Вместо этого он применяет оператор знака плюс ( + ) дважды! Что ничего не делает дважды, как я вскоре узнал. Однако, потому что "++n " выглядел допустимым... не помечено как синтаксическая ошибка... Я создал ужасного жука для себя.
поэтому, если вы не переопределите то, что он делает, унарный + фактически ничего не делает. Унарный-меняется от положительного к отрицательному и наоборот, поэтому " --n" также не помечен как синтаксическая ошибка, но он также ничего не делает.