[python] конвеер команд есть?
в питоне такого синтаксиса нет
def multi_apply(value, *functions):
for f in functions: value = f(value)
return value
Кстати, кто-нибудь знает, как называется эта фигня, когда программисту (ну или просто человеку) не знакомому с каким-нибудь языком/фреймворком/библиотекой нужно получить результат А, он такой, ну, наверное для этого нужно сделать Б, хм хм хм, а для Б очевидно нужно сделать В, приходит на форум про этот язык/фреймворк/библиотеку, и ни словом не обмолвившись об А или хотя бы о Б (ну, он же самый умный и там всё понимает, как нужно делать, это с В проблемы) вгоняет окружающих в своего рода ступор своим вопросом про В!
Кажется, я недавно где-то видел обсуждение этого явления, у него есть название и чуть ли не статья в Википедии!
def multi_apply(value, *functions):а с параметрами (настройками) функций как быть?
тебя кстати прошу, как знающего и python, и C#.
на каких задачах python удобнее, чем C#?
это ужасно
def multi_apply(value, *functions):
for f in functions: value = f(value)
return value
вот:
def multi_apply(value, *functions):
return reduce(lambda x, f: f(x functions, value)
Кстати, кто-нибудь знает, как называется эта фигня, когда программисту (ну или просто человеку) не знакомому с каким-нибудь языком/фреймворком/библиотекой нужно получить результат А, он такой, ну, наверное для этого нужно сделать Б, хм хм хм, а для Б очевидно нужно сделать В, приходит на форум про этот язык/фреймворк/библиотеку, и ни словом не обмолвившись об А или хотя бы о Б (ну, он же самый умный и там всё понимает, как нужно делать, это с В проблемы) вгоняет окружающих в своего рода ступор своим вопросом про В!
Но можно сделать: см., к примеру, http://mail.python.org/pipermail/python-list/2008-February/527446.html
в питоне такого синтаксиса нет
а с параметрами (настройками) функций как быть?functool.partial, лямбды, изначально использовать функции-фабрики.
Вообще судя по соседнему треду тебе действительно нужно вовсе не это, а работать с потоками.
Ну, овладей генераторами (http://www.dabeaz.com/generators/, начни с http://www.dabeaz.com/generators/Generators.pdf)
Параллельно гляди в http://docs.python.org/library/itertools.html (включая recipes).
Обычно получается не так красиво, как в шарпе, экстенжен методов для итераторов _очень_ не хватает. Впрочем, на самом деле это нужно не так уж часто и не настолько кривее получается, особенно если не пытаться воротить всякое и не стесняться давать имена промежуточным значениям.
lst = xrange(99)
lst = (i for i in lst if re.match('[38]', str(i
lst = (list(g) for k, g in groupby(sorted(lst lambda i: i // 10
lst = sorted(lst, key = lambda g: len(g
for x in lst:
print x
Имей в виду, что такой функции Contains и в сишарпе нет, а ещё groupby в питоне имеет другой смысл. Ну и это, как-то так получается, что лично мне такие вещи приходится очень редко делать.
на каких задачах python удобнее, чем C#?Если честно, я уже довольно давно не брался за C#, потому что для меня вопрос в обратную сторону стоит, и C# удобней Питона когда 1) нужно что-то стрёмное делать с виндой для чего не хватает ctypes, ну или вообще что-то есть в BCL но нет в базовом Питоне (типа криптографии) 2) хочется чуть более нетривиальное GUI, чем комфортно набросать в tkinter (но не хочется трахаться с QT и другими 3) хочется приличной скорости без заморачивания с numpy/ctypes/psyco/Cython, 4) заранее понятно, что это что-то получится довольно большое, так что интеллисенс, рефакторинг и статическая проверка типов будут полезны.
Оставить комментарий
Dasar
В python-е есть синтаксис для записи конвеера команд?т.е. чтобы вместо синтаксиса F1(F2(F3(x можно было написать что-то типа: x | F3 | F2 | F1 или F3(x).F2.F1?