python哨兵循环_Python中的Sentinel(哨兵)值
哨兵值是一個(gè)特殊值(唯一),因?yàn)楹退衅渌挡煌?#xff0c;所以可以作為區(qū)分其它值得標(biāo)記。
你有可能已經(jīng)使用過它,比如
val = mydict.get("some_key", None)
當(dāng)"some_key",不存在時(shí),返回None。在這兒None可以認(rèn)為是哨兵值。
但問題是,如果本來它的值有可能是None
mydict['some_key'] = None
你可能會考慮其它的哨兵值。
val = mydict.get("some_key", "NONE")
但如果"NONE"也是合法值呢。你可能又要換成其它值,換來換去,問題還是沒有徹底解決。
這時(shí)候,你需要一個(gè)獨(dú)特的值,來徹底和其它值區(qū)分。
MISSING = object()
val = mydict.get(key, MISSING)
# later...
if val is MISSING:
# ...
object()的這個(gè)實(shí)例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_“美