python函数默认值只初始化一次

当在函数中定义默认值时,值初始化只会进行一次,就是执行到def methodname时执行。看下面代码:

from datetime import datetime
  
def test(t=datetime.today()):
  print t
  
if __name__ == "__main__":
  test()
  test() 

两次方法调用输出的时间都为同一个值,而不是我们预想当前执行时间。对于上面这种情况,建议用下面的方式实现:

from datetime import datetime 
  
def test2(t = None):
  if t is None:
    t = datetime.today()
  print t 
  
  
if __name__ == "__main__":
  test()
  test() 

  

原文地址:https://www.cnblogs.com/lakeone/p/7442595.html