Почему эти два утверждения не являются эквивалентами?

>> math.pow(-2,2)
4.0
>> -2 ** 2
-4

Python 3.5.3 (по умолчанию, 19 января 2017 г., 14:11:04)

5
lontivero 28 Авг 2017 в 04:13

3 ответа

Лучший ответ

Здесь важен порядок выполнения операторов (приоритет оператора): при -2**2 сначала выполняется возведение степени 2 в степень 2, а затем отрицательный знак.

Используйте скобки, чтобы получить желаемый результат

(-2) ** 2 = 4

6
Reblochon Masque 28 Авг 2017 в 01:14

Вы можете проверить приоритет в документации по Python3.

-2 ** 2

Вычисляется как: -(2**2) = -4.

0
ABcDexter 28 Авг 2017 в 01:19

Поскольку приоритет «-» находится позади приоритета «**», используйте (-2) ** 2, чтобы сначала вычислить -2

1
Hejun 28 Авг 2017 в 01:21