编写高质量Python代码的59个有效方法 第20条:用None

2018-09-19  本文已影响0人  淡淡的咸鱼

先上代码:

import datetime, time
def log(message, when=datetime.datetime.now()):
    print(message, when)

log('hello once')
time.sleep(2)
log('hello twice')
>>>
hello once 2018-09-19 20:47:35.700265
hello twice 2018-09-19 20:47:35.700265
[Finished in 2.2s]

解释:
参数的默认值,会在每个模块加载进来时求出,而很多模块都是在程序启动时加载的。包含这段代码的模块一旦加载进来,参数的默认值就固定了。解决方法如题所示:

import datetime, time
def log(message, when=None):
    if when == None:
        when = datetime.datetime.now()
    print(message, when)

log('hello once')
time.sleep(2)
log('hello twice')
>>>
hello once 2018-09-20 14:16:28.560857
hello twice 2018-09-20 14:16:30.561830
[Finished in 2.2s]

要点

上一篇 下一篇

猜你喜欢

热点阅读