Почему эта функция возвращает 3125 - PullRequest
0 голосов
/ 25 мая 2018

Сегодня я увидел функцию в учебнике по питону, код которой приведен ниже:

def power(x,y):
    return pow(x,y)

Когда я дал параметры для power, как показано ниже:

>>>params=(5,)*2
>>>power(*params)  
3125

Функциявернул мне 3125. Я знаю, что 3125 может быть получен из (5 * 5) * (5 * 5) * 5, но я не понимаю, как работают параметры в коде.В чем смысл выражения (5,)*2?

Ответы [ 3 ]

0 голосов
/ 25 мая 2018

Обратите внимание, что (5,)*2 расширяется до (5, 5), иначе это кортеж .Смотрите документы по кортежам .

Re pow(): согласно документам , pow(x,y) возвращает x степени y :

В вашем сценарии вы используете* in power(*params) для вставки двух элементов в кортеже params в качестве отдельных параметров в функцию.Вы могли бы добиться того же, набрав power(5,5).

Таким образом, 5 ^ 5, что равняется 3125.

Интуитивно понятное руководство по кортежам: здесь .

0 голосов
/ 25 мая 2018

Если вы проверите значение params, вы увидите, как оно работает:

>>> params=(5,)*2
>>> params
(5, 5)
>>> power(*params)
3125

*n, примененное к последовательности, возвращает эту последовательность, добавленную к себе n раз ()см. документацию ).

0 голосов
/ 25 мая 2018

Это объединение кортежа.

>>>(5,)*2
(5,5)
>>>(5,)*5
(5,5,5,5,5)
...