簡體   English   中英

dict.get(key, default) 與 dict.get(key) 或默認值

[英]dict.get(key, default) vs dict.get(key) or default

Python中的以下兩個語句之間有什么區別(性能或其他)?

v = my_dict.get(key, some_default)

對比

v = my_dict.get(key) or some_default

如果您的值是false-y ,則存在巨大差異:

>>> d = {'foo': 0}
>>> d.get('foo', 'bar')
0
>>> d.get('foo') or 'bar'
'bar'

應該使用or default ,如果您的值可以是假的-Y。

最重要的是,使用or添加額外的字節碼; 必須執行測試和跳轉。 只需使用dict.get() ,在這里使用or default沒有優勢。

還有另一個區別:如果some_default不是值而是表達式,則必須在傳遞給dict.get()之前對其進行評估,而如果您從字典中獲得真值,則不會評估 with or表達式。 例如:

v = my_dict.get(key, do_something_that_takes_a_long_time())  # function always called
v = my_dict.get(key) or do_something_that_takes_a_long_time()  # function only called if needed

因此,雖然它確實不安全, or您的字典可能包含假值,但可能會帶來性能優勢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM