Пропадет ли встроенная функция pow() при импорте одноименной функции из библиотеки math?

Рейтинг: 3Ответов: 3Опубликовано: 20.07.2023

Если импортировать math.pow() с помощью кода from math import pow то я больше не смогу обращаться ко встроенной функции pow()?

Ответы

▲ 2Принят

Да, при импорте from math import pow стандартная функция будет перекрыта. Это причина, почему не следует злоупотреблять импортом в глобальное пространство имен.

Если нельзя, но очень хочется:

>>> old_pow=pow
>>> from math import pow
>>> print( old_pow(10, 2, 3) )
1

или

>>> from math import pow
...
>>> from builtins import pow as old_pow
>>> print( old_pow(10, 2, 3) )
1
▲ 1

Cможете, это разные функции. Чтобы в этом убедиться можно передать в нее три аргумента

print(pow(10, 2, 3))

Результат: 1

import math
print(math.pow(10, 2, 3))

Результат: TypeError: pow expected 2 arguments, got 3

При таком импорте функции: from math import pow она переопределится

print(pow.__doc__)

Результат: Return x**y (x to the power of y)

▲ 0

Из комментария @andreymal вывел интересную штуку. Вы можете использовать pow как из встроенного в python модуля, так и из math

from math import pow
from builtins import pow as pow2 

print(pow2(10,2,3))
print(pow(10,2,3))

Вывод в консоли

1

А далее ошибка

Exception has occurred: TypeError
pow expected 2 arguments, got 3