Comments 12
#6 это жесть. Квадратное колесо едет плохо, но если мы возьмём 2 таких колеса вместе, то станет чуток лучше. Питон это не про краткость, а про читаемость. Я понимаю что это синтетические примеры... Но скорость разработки, основное преимущество питона, нивелируется такими конструкциями! Попробуй потом пойми, что имел ввиду автор...
Питер, вам не стыдно? Давайте ещё статью о том как объявлять переменные опубликуем на Хабре. Более того, в статье даются откровенно вредные советы.
Из коротенького параграфа документации посвящённому лямбда-функциям:
Small anonymous functions can be created with the
lambda
keyword. Semantically, they are just syntactic sugar for a normal function definition.
Код вроде этого в корне не верен:
sorted_list = lambda x: (sorted(i) for i in x)
second_largest = lambda x, func: [y[len(y)-2] for y in func(x)]
Давайте ещё статью о том как объявлять переменные опубликуем на Хабре.
Гм... Интересная идея. Особенно, если не ограничиваться Питоном и немножно "залезть в потроха". Как хранится, как передаётся, выделение памяти, сборщики мусора... Тут можно копать и копать.
а мне стать в самый раз, отправил сыну, написано очень доступно
а кто-нибудь может сказать зачем нужна вот эта жесть:
tables = [lambda x = x: x*10 for x in range(1, 11)]
for table in tables:
print(table())
если проще написать без всяких лямбд:
tables = [x*10 for x in range(1, 11)]
for table in tables:
print(table)
Ну, тут наверно просто хотели показать идею “ленивого вычисления”(или как там правильно перевести lazy evaluation?) .
В первом случае первая строчка создает только массив лямбд, а конкретные значения получаются позже, когда мы эти лямбды выполняем: table().
Ну как-бы наверно, да. Если бы не одно но. В питоне лямбды настолько кастрированные, что в 99% случаев нет никакого смысла вычислять их лениво...
Лямбда класс/интерфейс я понимаю. Джавист. Но вот до лямбда функций си# пайтона, так и не догнал. Науя? Чтобы не обьявить пару лишних переменных внутри метода? Может я - дурак. Но это все анти паттерн ООП. Переписывыл такие методы с шарпа на джаву. Надо было в метод вложить метод с кучей параметров и дерево безгранично в итоге.
Про функционалку и стримы в джава ничего против не имею. Я лишь про вопиющие приемы конкретно пайиона и шарпа
Для извращений не особо они ограничены синтаксически.
funk = lambda x, b ,fu= lambda b: b**2: print(x,fu(b))
funk(9,9) # 9 81
Лямбда-функция в Python простыми словами