or循环(和while循环)可以有一个else分支?

  |   0 评论   |   0 浏览   |   给我丶鼓励
# Python的' for '和' while '循环支持' else '子句,该子句仅在循环结束而没有碰到' break '语句时执行。
def contains(haystack, needle):
    """
    Throw a ValueError if `needle` not
    in `haystack`.
    """
    for item in haystack:
        if item == needle:
            break
    else:
        # 这里的“else”是一个“completion子句”,
        # 它只在循环运行到完成时没有碰到“break”语句时运行
        raise ValueError('Needle not found')


>>> contains([23, 'needle', 0xbadc0ffee], 'needle')
None

>>> contains([23, 42, 0xbadc0ffee], 'needle')
ValueError: "Needle not found"

# 就个人而言,我不喜欢循环中的“else”“completion子句”,
# 因为我觉得它很混乱。我宁愿做这样的事
def better_contains(haystack, needle):
    for item in haystack:
        if item == needle:
            return
    raise ValueError('Needle not found')

# 注意:通常您会编写类似这样的内容来进行成员资格测试,
# 这更符合python的风格
if needle not in haystack:
    raise ValueError('Needle not found')

标题:or循环(和while循环)可以有一个else分支?
作者:给我丶鼓励
地址:https://blog.doiduoyi.com/articles/1606564734606.html

评论

发表评论