 Tishka17
            Tishka17
            А как мне динамически создать функцию с определенными аргументами? 
Сейчас у меня f(args, *kwargs), но о ней непонятный хелп и наличие обязательных параметров приходится руками делать. 
У меня генерится куча таких функций с разными параметрами.

 
            










def func(позиционный_аргумент1, позиционный_аргумент2, ключевой_аргумент1=значение, ключевой_аргумент2=значение)
SetazeR, грубо: из файла у меня грузится список параметров. Есть реальная функция, работающая с *args. Я хочу иметь именованную функцию уже с конкретными параметрами.
Tishka17, саммоню TLemur в тред
Так я в динамике их должен задать
Tishka17, я не догнал что ты хочешь сделать, можешь пример дать?
SetazeR, то есть есть функция f(*args) и есть генератор функций. Вот я хочу вызвать gen("name", "arg1") и чтобы она вернула функцию как будто она name(arg1), но по сути работающую как f
питон - не функциональный язык
Tishka17, какое забористое и сильное колдунство.
в нормальных языках это обычные практики
a13, щас я тупо юзаю
*argsи**kwargsи в__doc__пишу что надо. Но приходится руками состав проверятьTishka17, не, ну можно канеш заюзать лямбду, но оно неименованное будет https://docs.python.org/3/t...a#lambda-expressions
в питоне лямбды неполноценные
a13, ¯_(ツ)_/¯
Я с таким колдунством ещё не сталкивался. Хотелось бы посмотреть на практическую реализацию.
из рабочего кода(вроде бы ничего nda-ного тут нет):
Ничего не понял
a13, и как это работает?
хорошо работает, в ынтырпрайзных продакшнах
a13, в смысле каким образом это работает? что тут происходит?
генерятся функции-генераторы генераторов функций для строки без изменений (indentity) и с транслитерацией (str-tr)
внутре просто матчинг регулярного выражения (pregexp)
a13, жесть какая.
Так оно может сгенерировать функцию с двумя аргументами или с тремя в зависимости от аргументов?
конкретно это - нет, я тут просто показал человеку, зачем нужно вообще генерировать функции, а так - наздоровье (правда тут уже придётся макросами, а не функциями. если в scheme, конечно)
сопсна, первая функция просто делает враппер для того, чтобы одним махом использовать её и для обычной сторки и для измененнной
второе определение декларирует функции string-conv-gen-tr
string-conv-gen таким образом
где tr - функция трансляции строки
re-fmt - регулярка, которая, в общем случае определяет, в каком месте
нужно матчить оттранслированную строку s (начало, конец, середина,
пофиг)
регулярка задаётся при генерации, окончательной функции, которая имеет
вид
ну т.е. просто задаётся строка, транслируется и матчится.
Смысл колдунства (хотя какое колдунство, обычная функциональная
практика, как уже сказал) - одним махом нагенерить 8 (или даже больше,
ща уже не помню) функций однотипного вида. Меньше копипасты - меньше
потенциальных ошибок.