On 7/27/20 10:01 AM, Peter Moore wrote:
> I have had a long standing unanswered question on on stackoverflow: is it 
> possible to pass a function to a default parameter so that you could do in 
> essence things like this.
>
> def time_diff(target_time,  curr_time= lambda : datetime.now() ): 
>     return curr_time - target_time
>
> this would be an syntactical improvement over this style where you have if 
> statement to initialize a missing parameter. 
>
> def time_diff(target_time, curr_time=None):
>    if curr_time == None:
>       curr_time = datetime.datetime.now()
>    return  curr_time - target_time
I will point out that you CAN pass a function as the default value of a
function parameter, and it means that the parameter will be bound to the
function itself, so it becomes a callable (so doesn't help you in your
case). But this does become an impediment to trying to define it this
way, you need somehow to distinguish between the function itself being
the default value, or some magically invocation of the function at each
call.

-- 
Richard Damon
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/64ZTCJWJO74KD2EFUOSICOPT6XTSBO2R/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to