我讀一個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')
?這種模式有什麼原因嗎?
它有一個目的,當默認參數是一個「列表」或另一個可變的對象,但在這裏它似乎是多餘的。 –