Я знаю, что могу использовать num ** pow в качестве альтернативы, но на будущее я хочу понять, почему не работает следующий код:
def math(num, pow): return pow(int(num), int(pow)) # the return keyword returns the result pass print(math(2, 4))
вы дублируете встроенную функцию pow с локальной переменной pow, вы можете видеть, что в качестве аргумента функции у вас есть pow
pow
, которую вы можете использовать:
__builtin__.pow(int(num), int(pow))
Вы переопределяете имя символа. pow в вашей функции math - это переменная, переданная в качестве аргумента, а не функции.
math
Тогда math - это имя модуля, вы не должны переопределять его; вызвать функцию по-другому