Экспонирование с использованием встроенных функций: ** и pow ()

Возведение может быть использован с помощью встроенного pow -функции или ** оператора:

 2 ** 3    # 8
pow(2, 3) # 8

 

Для большинства (все в Python 2.x) арифметических операций тип результата будет типом более широкого операнда. Это не верно для ** ; следующие случаи являются исключениями из этого правила:

  • Основание: int , показатель: int < 0 :

     2 ** -3
    # Out: 0.125 (result is a float) 
  • Это также верно для Python 3.x.

  • Перед Python 2.2.0, это поднял ValueError .

  • Основание: int < 0 или float < 0 , показатель: float != int

     (-2) ** (0.5)  # also (-2.) ** (0.5)    
    # Out: (8.659560562354934e-17+1.4142135623730951j) (result is complex) 

operator модуль содержит две функции, которые эквивалентны ** -оператора:

 import operator
operator.pow(4, 2)      # 16
operator.__pow__(4, 3)  # 64

 

или можно напрямую вызвать __pow__ метод:

 val1, val2 = 4, 2
val1.__pow__(val2)      # 16
val2.__rpow__(val1)     # 16
# in-place power operation isn't supported by immutable classes like int, float, complex:
# val1.__ipow__(val2)