python哨兵循环_Python中的Sentinel(哨兵)值
哨兵值是一個特殊值(唯一),因為和所有其它值不同,所以可以作為區(qū)分其它值得標(biāo)記。
你有可能已經(jīng)使用過它,比如
val = mydict.get("some_key", None)
當(dāng)"some_key",不存在時,返回None。在這兒None可以認為是哨兵值。
但問題是,如果本來它的值有可能是None
mydict['some_key'] = None
你可能會考慮其它的哨兵值。
val = mydict.get("some_key", "NONE")
但如果"NONE"也是合法值呢。你可能又要換成其它值,換來換去,問題還是沒有徹底解決。
這時候,你需要一個獨特的值,來徹底和其它值區(qū)分。
MISSING = object()
val = mydict.get(key, MISSING)
# later...
if val is MISSING:
# ...
object()的這個實例MISSING,在其它任何地方都不會出現(xiàn),不會出現(xiàn)重復(fù)的可能。
來看看Flask源碼中的例子
# a singleton sentinel value for parameter defaults
_sentinel = object()
class Flask():
# ...
def do_teardown_request(self, exc=_sentinel):
if exc is _sentinel:
pass
參考:https://treyhunner.com/2019/03/unique-and-sentinel-values-in-python/
總結(jié)
以上是生活随笔為你收集整理的python哨兵循环_Python中的Sentinel(哨兵)值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: inodesusedpercent_Li
- 下一篇: 如何给字体添加底色indesign_“美