Skip to main content
 首页 » 编程设计

python之lambda或其他方法可以用作python中的默认参数吗

2025年05月04日14lhb25

我想使用一个在您调用该函数时初始化的默认参数,因此每次调用它时它的默认参数都不同。为了说明我要问的是你想要一个时间差异函数,如果没有提供第二次时间则默认为当前时间:

通常你会这样做。

def tdiff(target_time, curr_time=None): 
   if curr_time == None: 
      curr_time = datetime.datetime.now() 
   return  curr_time - target_time 

但去掉 if 语句会更好。这可以用 lambda 完成吗? (像这样)

def tdiff(target_time,  curr_time= lambda : datetime.now() ):  
    return curr_time - target_time 

编辑:我知道 lambda 不起作用。其他方法行得通吗?

请您参考如下方法:

Can this be done with lambda ?

没有。您所拥有的在语法上是有效的,但是 curr_time 的默认值最终成为 lambda 函数,而不是调用它时返回的 datetime 值。这可以解决:

if callable(curr_time): 
    curr_time = curr_time() 

但到那时,您还不如使用问题中包含的 if curr_time is None: 方法。

(注意比较应该是is None,而不是== None。)