Почему при возведении отрицательного числа в квадрат на python получается отрицательное число?

Не могу понять почему при возведении отрицательного числа в четную степерь оно остается отрицательным на python?

var = -2 ** 2

print(var)

Результат выполнения:

-4 Process finished with exit code 0


Ответы (2 шт):

Автор решения: Stanislav Volodarskiy

Потому что это выражение равносильно -(2 ** 2). Подробнее в таблице приоритетов операторов. Возведение в степень на одну строку выше перемены знака:

expr = '-2 ** 2'
print(ast.dump(ast.parse(expr, mode='eval'), indent=4))
Expression(
    body=UnaryOp(
        op=USub(),
        operand=BinOp(
            left=Constant(value=2),
            op=Pow(),
            right=Constant(value=2))))
→ Ссылка
Автор решения: HardRoma

Проще всего. Надо '-2' взять в скобки. Так же работает и в базовой математике.

var = (-2)**2

print(var)
→ Ссылка