我想返回KeyError



我想返回 KeyError,但是它返回 None。我不明白为什么。

if index == self.length or self.slots[index]==None:
    raise KeyError

您不提高 a KeyError,因为您不输入if -Branch。而且您不会输入if分支,因为您的条件都不是true

如果测试案例(您尚未显示!)确实需要提高KeyError

,您可能需要调整病情

要调试此问题,您可以插入一些print-统计:

print(index, self.length, index==self.length)
print(self.slots[index], self.slots[index]==None)
if index == self.length or self.slots[index]==None:
    raise KeyError

或使用您选择的调试器。

但是一些评论:

  • 通常您想检查索引是否为 >=到长度(包括 ==!)。
  • 您应该使用isNone进行比较。NoneNotImplemented是保证的单例。
  • 使用KeyError中的异常消息,例如raise KeyError('index out of bounds or item is None! Try again.')
  • 没有达到明确return的功能将返回None。这可能就是为什么您的代码返回None

最新更新