Оператор енергетики

Оновлено: 24.04.2023

Потужний оператор прив’язується сильніше, ніж унарні оператори зліва; він зв’язується менш тісно, ніж унарні оператори справа. Синтаксис:

power ::=  (await_expr | primary) ["**" u_expr]

Таким чином, у послідовності степеневих і унарних операторів без дужок оператори обчислюються справа наліво (це не обмежує порядок обчислення для операндів): -1**2 призводить до -1 .

Оператор ступеня має таку саму семантику, як і вбудована функція pow(), коли викликається з двома аргументами: він повертає свій лівий аргумент, зведений до степеня правого аргументу. Числові аргументи спочатку перетворюються на загальний тип, і результат має відповідний тип.

Для операндів int результат має той самий тип, що й операнди, якщо другий аргумент не є від’ємним; у цьому випадку всі аргументи перетворюються на значення float і видає результат float. Наприклад, 10**2 повертає 100, а 10**-2 повертає 0,01.

Піднесення 0.0 до негативного степеня призводить до ZeroDivisionError. Зведення від’ємного числа до дробового степеня призводить до complex числа. (У попередніх версіях це викликало ValueError.)

Цю операцію можна налаштувати за допомогою спеціального методу __pow__().