我收到一個關於Web應用程序中陳舊參數的調用。我看到這個帖子...Python - 將命名參數傳遞給函數對象
wtforms+flask today's date as a default value
...這是現貨上。
該字段的默認值是在Web服務器啓動時設置的。這很容易測試。文件中有幾個打印語句,它被證明。
因此,現在的高級軟件工程師的問題是「我如何傳遞參數?」。
那麼接下來...
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
- 我在想lambda表達式。像 myfunc = lambda:datetime.now()。date() - timedelta(days = 365) 它肯定會產生預期的結果,但它可能會導致大量複製和粘貼相同的代碼。
解決此問題的最佳方法是什麼?我認爲有一種很好的方式,不是我剛剛描述的兩種方式之一,我們現在還不知道。
在1分鐘之內回答'functools.partial'。我會刪除我的。 – AKS
另請參閱:[部分應用](https://en.wikipedia.org/wiki/Partial_application)和[Currying](https://en.wikipedia.org/wiki/Currying) –