[python] конвеер команд есть?

Dasar

В python-е есть синтаксис для записи конвеера команд?
т.е. чтобы вместо синтаксиса F1(F2(F3(x можно было написать что-то типа: x | F3 | F2 | F1 или F3(x).F2.F1?

psihodog

в питоне такого синтаксиса нет

bleyman

def multi_apply(value, *functions):
for f in functions: value = f(value)
return value

Кстати, кто-нибудь знает, как называется эта фигня, когда программисту (ну или просто человеку) не знакомому с каким-нибудь языком/фреймворком/библиотекой нужно получить результат А, он такой, ну, наверное для этого нужно сделать Б, хм хм хм, а для Б очевидно нужно сделать В, приходит на форум про этот язык/фреймворк/библиотеку, и ни словом не обмолвившись об А или хотя бы о Б (ну, он же самый умный и там всё понимает, как нужно делать, это с В проблемы) вгоняет окружающих в своего рода ступор своим вопросом про В!
Кажется, я недавно где-то видел обсуждение этого явления, у него есть название и чуть ли не статья в Википедии!

Dasar

def multi_apply(value, *functions):
а с параметрами (настройками) функций как быть?

Dasar

FJ>
тебя кстати прошу, как знающего и python, и C#.
на каких задачах python удобнее, чем C#?

psihodog


def multi_apply(value, *functions):
for f in functions: value = f(value)
return value
это ужасно :crazy:
вот:
def multi_apply(value, *functions):
return reduce(lambda x, f: f(x functions, value)

Кстати, кто-нибудь знает, как называется эта фигня, когда программисту (ну или просто человеку) не знакомому с каким-нибудь языком/фреймворком/библиотекой нужно получить результат А, он такой, ну, наверное для этого нужно сделать Б, хм хм хм, а для Б очевидно нужно сделать В, приходит на форум про этот язык/фреймворк/библиотеку, и ни словом не обмолвившись об А или хотя бы о Б (ну, он же самый умный и там всё понимает, как нужно делать, это с В проблемы) вгоняет окружающих в своего рода ступор своим вопросом про В!
:lol:

Vlad1953



в питоне такого синтаксиса нет
Но можно сделать: см., к примеру, http://mail.python.org/pipermail/python-list/2008-February/527446.html

bleyman

а с параметрами (настройками) функций как быть?
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) заранее понятно, что это что-то получится довольно большое, так что интеллисенс, рефакторинг и статическая проверка типов будут полезны.

ermsoft

Посмотри на stream.py.
Оставить комментарий
Имя или ник:
Комментарий: