Я получил вызов о устаревших параметрах в веб-приложении. Я видел этот пост ...Python - передать названные аргументы объекту функции
wtforms+flask today's date as a default value
... который был на месте.
По умолчанию значение поля устанавливалось при запуске веб-сервера. Это было легко проверить. Несколько утверждений печати в файле, и это было доказано.
Итак, теперь вопрос старшего инженера-программиста: «Как передать параметры в?».
Итак ...
myfunc(offset=3):
.... some code
fromdate = fields.DateField('From Date', default=myfunc, validators=[validators.required()])
Но старший инженер-программист хотел бы, чтобы иметь возможность встраивать аргументы функции в то время он назначен как ...
fromdate = fields.DateField('From Date', default=myfunc(-10), validators=[validators.required()])
. .. но без непосредственного обращения к нему. В принципе, хранение объекта функции и его аргументов без их выполнения, все еще откладывается, чтобы код выполнялся при загрузке страницы, а не на старте сервера.
В настоящее время у нас есть две идеи.
- Старший инженер-программист рассматривает возможность обертывания метода вокруг метода. Итак, есть один основной метод, а затем множество других, специфичных для сценариев, таких как myfuncminus10
- Я думаю о лямбда-выражениях. Что-то вроде myfunc = lambda: datetime.now(). Date() - timedelta (days = 365) Это определенно даст ожидаемый результат, но это может привести к большому копированию и вставке того же кода.
Каков наилучший способ приблизиться к этому? Я полагаю, что есть довольно хороший способ, который не является одним из двух способов, которые я только что описал, и мы пока еще этого не знаем.
В течение минуты 3 ответа для 'functools.partial'. Я удалю шахту. – AKS
Также смотрите: [Частичное приложение] (https://en.wikipedia.org/wiki/Partial_application) и [Currying] (https://en.wikipedia.org/wiki/Currying) –