0
我想返回KeyError
,但它会返回None
。我不懂为什么。我想返回KeyError not None
if index == self.length or self.slots[index]==None:
raise KeyError
我想返回KeyError
,但它会返回None
。我不懂为什么。我想返回KeyError not None
if index == self.length or self.slots[index]==None:
raise KeyError
你不提高一个KeyError
因为你不进入if
分枝。而且您不输入if
-分支,因为您的条件都不是true
。
如果测试用例(你没有显示!)真的应该提高KeyError
,你可能需要调整你的条件。
要调试这个问题,你可以插入一些print
-statements:
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
或使用您选择的调试器。
但是一些评论:
>=
的长度(包括==
!)。is
与None
进行比较。 None
和NotImplemented
保证单身。KeyError
使用异常消息,例如raise KeyError('index out of bounds or item is None! Try again.')
return
将返回None
。这可能就是为什么你的代码返回None
!
@AndrewL''()'和消息是可选的,它也是“正确的”来引发异常类* shudder *。 – MSeifert
您是否知道“返回”KeyErrror和“引发”KeyError是非常不同的事情?从你发布的内容来看,我不知道你是否在职,但是如果你不在某个职能上,你不能“返回”某些东西。您可能想要编辑您的问题,以提供更多关于您在此尝试完成的详细信息 –