Форум сайта python.su
0
Добрый день!
Решаю одну задачу.
def task(a, b): return lambda x: x in range(a, b + 1) print(task(1, 3)(2))
Офлайн
857
ImardenПотому что эти скобки - это вызов функции, которая возвратилась.
Не пойму почему (2) стоит за скобками
Офлайн
568
Для начала вам надо ответить на вопрос: что возвращает функция task, и чему будет равна переменная
a = task(1, 3)
Офлайн
568
x in range(a, b + 1)
Офлайн
.
Отредактировано J.R. (Янв. 27, 2016 08:31:12)
Офлайн
0
FishHooktask(1, 3) возварщает
(1, 3)
<function task.<locals>.<lambda> at 0x00460150>
Отредактировано Imarden (Ноя. 10, 2015 07:53:38)
Офлайн
568
Нет, пока не спасибо.
x in range(a, b + 1)
Офлайн
0
FishHookА как без перебора?
Нет, пока не спасибо.
Офлайн
857
FishHookУ него третий питон, а он не перебирает при поиске в range. range - это специальный тип (который во втором - xrange).
Зачем вам перебор значений для того
>>> range(1, 3) range(1, 3) >>> type(_) <class 'range'> >>>
Отредактировано py.user.next (Ноя. 10, 2015 09:07:32)
Офлайн
568
py.user.nextА вот этого я не знал. Спасибо.
У него третий питон, а он не перебирает при поиске в range
Офлайн