51Testing软件测试论坛

标题: python中的else语句 [打印本页]

作者: 测试积点老人    时间: 2018-12-19 13:16
标题: python中的else语句
python中的for和while循环支持else分支,else中的代码只有在没有break的情况下运行,如下:
  1. def contains(haystack, needle):
  2.     """
  3.     Throw a ValueError if `needle` not
  4.     in `haystack`.
  5.     """
  6.     for item in haystack:
  7.         if item == needle:
  8.             break
  9.     else:
  10.         # The `else` here is a
  11.         # "completion clause" that runs
  12.         # only if the loop ran to completion
  13.         # without hitting a `break` statement.
  14.         raise ValueError('Needle not found')

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

  17. >>> contains([23, 42, 0xbadc0ffee], 'needle')
  18. ValueError: "Needle not found"
复制代码
其实上有时候用raise也能实现相似功能,如下:
  1. def better_contains(haystack, needle):
  2.     for item in haystack:
  3.         if item == needle:
  4.             return
  5.     raise ValueError('Needle not found')
复制代码
这样更符合python风格。
  1. if needle not in haystack:
  2.     raise ValueError('Needle not found')
复制代码



作者: Miss_love    时间: 2021-1-5 17:01
支持分享




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2