我写了一个Python代码,格式如下:
if a1 in list1:
if b1 == 1 and c1>1:
raise Exception ('invalid c1 for b1')
elif b1 == 2 and c1>2:
raise Exception ('invalid c1 for b1')
elif b1 == 3 and c1>3:
raise Exception ('invalid c1 for b1')
else
z = c1 * d * f
else:
raise Exception ('invalid a1')
我对我的代码进行了 pylint 测试,它显示了一个错误:“在“raise”之后不需要“elif”。将“elif”更改为“if””。我按照下面的代码做了:
if a1 in list1:
if b1 == 1 and c1>1:
raise Exception ('invalid c1 for b1')
if b1 == 2 and c1>2:
raise Exception ('invalid c1 for b1')
if b1 == 3 and c1>3:
raise Exception ('invalid c1 for b1')
else
z = c1 * d * f
else:
raise Exception ('invalid a1')
现在,pylint 说“在“raise”之后出现不必要的“else”,删除“else”并取消缩进其中的代码”。我并不热衷于这样做,因为两个“else”语句涉及两种不同的情况。我想知道是否有更好的方法来实现此代码, pylint 不会引发任何问题。 (我知道我可以使用“#pylint disable=...”禁用 pylint 错误,但这不是我的第一个选择)
根据 pylint 文档,
raise Exception
不应成为 else
或 elif
块的一部分。
根据 pylint,你的代码应该如下所示:
if a1 not in list1:
raise Exception('invalid a1')
if b1 == 1 and c1 > 1:
raise Exception('invalid c1 for b1')
if b1 == 2 and c1 > 2:
raise Exception('invalid c1 for b1')
if b1 == 3 and c1 > 3:
raise Exception('invalid c1 for b1')
z = c1 * d * f