[python, django, noobquestion] Хочется странного
x = lambda x,y: map(lambda f: f(x,y [
method1, method2, method3, …, methodN
])
?
попробую понять что это, и как работает
спасибо
Может получИться или я ща тупо зря теряю время ?
upd: оказалось, что :
PicklingError: Can't pickle <type 'function'>: attribute lookup __builtin__.function failedтак что я зря потерял время
Возможно, если ты приведешь пример, зачем тебе нужно это, то тебе предложат более питон решение.
Ну и собсно я уже вбил пару костылей, чтобы заработало.
В дек я помещаю кортежи из имен методов, а сами методы получаю через getattr.
Это конечно ещё более через жопу, но работает.
Ты понимаешь, что для твоих целей лямбда и def примерно одно и то же?
Я только только начал изучать python.
Но, если ты про вложенные функции, то их вроде как не рекомендуют передавать и использовать вне объемлющей функции. (ну по крайней мере в интернетах так пишут)
Да и один хрен, оказалось, что мне это не нужно, потому что указатели на функции (или как это в питоне называется) не могут сериализоваться пиклом. Какое щасье, что в питоне есть getattr, и что я вовремя про него узнал.
Ну в общем то в первом посте я постарался описать ситуацию.В первом посте написано, что ты хочешь реализовать, а не зачем. Ладно проехали
The following types can be pickled:
* None, True, and False
* integers, long integers, floating point numbers, complex numbers
* normal and Unicode strings
* tuples, lists, sets, and dictionaries containing only picklable objects
* functions defined at the top level of a module
* built-in functions defined at the top level of a module
* classes that are defined at the top level of a module
* instances of such classes whose __dict__ or __setstate__ is picklable (see section The pickle protocol for details)
Оставить комментарий
Alena_08_11
вот в c# я могу написать нечто такое:Короче лямбду, которая тупо последовательно вызовет какие то методы.
Можно ли сделать нечто такое в python?
(я хочу заюзать deque из таких вот лямбд в классе, который будет хранится в request.session (т.е. постоянно сериализоваться/десериализоваться). и при каждой обработке соответствующего view из дека будет браться такая вот лямбда, каждая составляющая которой (являющаяся методом вышеупомянутого класса) будет что то делать с request.POST и context для респонса. А м.б. и добавлять какие то новые лямбды в дек. В общем, иногда нужно, чтобы выполнился 1 метод, иногда 2, иногда 3 - зависит от условий. В принципе можно придумать пустой метод, прикинуть сколько будет по максимуму и, заполнив пропуски - пустыми методами, дергать из дека сразу это максимальное кол-во - но это как то хз. Я в питоне совсем некомильфо, ранее немного шарпоёбил - поэтому и мыслил его понятиями, надеясь что в питоне есть чё нить подобное. А ща вот понадобилось уже конкретно - а вроде как и нет такого.
И собственно ещё вопрос: Будет ли это вообще работать ? Ну то есть, я взял класс, в нем сделал дек, в дек поместил поочередно сколько то методов этого класса, попнул из дека один метод, сериализовал (в django вроде pickle для этого юзается десериализовал и, __внимание__, у меня тот же самый дек, и следующий попнутый элемент - будет ссылка на 2-й, помещенный при инициализации туда метод ? Будет ли это вообще работать ? или это полная херня и работать не будет, потому что ...
ps. Извините за сумбурное объяснение.