我读一个Scrapy,Redis的示例项目,https://github.com/rolando/scrapy-redis/blob/master/example-project/process_items.py,其中包含以下的源代码:在Python中,“覆盖”默认参数0的原因是什么?
def process_items(r, keys, timeout, limit=0, log_every=1000, wait=.1):
limit = limit or float('inf')
在我看来,该事实上默认limit
是float('inf')
,因为如果没有被指定,它最初采用默认值0
,然后在包含布尔运算符or
的行中立即转换为float('inf')
。
我的问题是:为什么不在def
行中设置默认limit=float('inf')
?这种模式有什么原因吗?
它有一个目的,当默认参数是一个“列表”或另一个可变的对象,但在这里它似乎是多余的。 –