Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 27, 2014 15:40:29

Dolinsk
Зарегистрирован: 2014-09-27
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Откуда берутся значения для х?

Здравствуйте, поиском не нашел, может не знаю как правильно искать.
Дан такой пример.

 
def func(selector):
if selector < 0:
def func1(x):
return x*x
return func1
else:
def func2(x):
return x*x*x
return func2

def oper(L, function):
res = [function(k) for k in L]
return res

dd=[2,4,10]
print oper(dd, func(-1))
Результат выполнения 4, 16, 100
Не могу понять откуда func1 и func2 берет х. И вообще как сохраняется selector = -1?
Я думаю, что в строке
res = [function(k) for k in L]
должна вызываться func с числами из dd.
То есть вот так:
func(2)
func(4)
func(10)
Но это должно влиять только на selector.

Отредактировано Dolinsk (Сен. 27, 2014 15:45:28)

Офлайн

#2 Сен. 27, 2014 15:42:48

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Откуда берутся значения для х?

Код в тегах



Офлайн

#3 Сен. 27, 2014 15:45:23

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Откуда берутся значения для х?

Dolinsk
Не могу понять откуда func1 и func2 берет х.
[function(k) for k in L]

Dolinsk
И вообще как сохраняется selector = -1
func(-1)
Возвращает func1 и функция oper использует её.



Отредактировано Budulianin (Сен. 27, 2014 15:47:40)

Офлайн

#4 Сен. 27, 2014 15:50:53

Dolinsk
Зарегистрирован: 2014-09-27
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Откуда берутся значения для х?

Budulianin спасибо за помощь.
Но я полагаю, что function(k) на первой итерации выглядит как func(2), то есть selector=2 и все.

Офлайн

#5 Сен. 27, 2014 15:57:37

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Откуда берутся значения для х?

Dolinsk
Но я полагаю, что function(k) на первой итерации выглядит как func(2), то есть selector=2 и все.

func(-1)
возвращает функцию func1, после этого она прекращает работу
и соответственно переменная selector никак не участвует в
res = [function(k) for k in L]

Прочитай



Отредактировано Budulianin (Сен. 27, 2014 16:07:21)

Офлайн

#6 Сен. 27, 2014 16:04:42

Dolinsk
Зарегистрирован: 2014-09-27
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Откуда берутся значения для х?

Нет такой статьи, ошибочная ссылка

Офлайн

#7 Сен. 27, 2014 16:06:22

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Откуда берутся значения для х?

print oper(dd, func(-1))

Последовательность действий такая:
вычисляется func(-1), она возвращает func1
далее вычисляется oper с аргументами dd и func1, она возвращает список 4, 16, 100
далее инструкция print выводит тебе в stdout результат oper.

Dolinsk
Нет такой статьи, ошибочная ссылка
Теперь есть



Отредактировано Budulianin (Сен. 27, 2014 16:08:04)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version