在 Python 中实现 peek() 方法时处理空堆栈的正确方法

Proper way to handle an empty Stack when implementing a peek() method in Python

当使用 Python 实现堆栈时,在空堆栈上处理操作的常规方法是什么?

我有以下 stack.peek 简单堆栈方法 class 使用 Python 列表实现:

def peek(self):
    if not self.empty:
        return self.items[-1]

如果堆栈为空,是 return 一个 None 类型值更好还是引发错误?我不喜欢 returning 一个字符串的想法,它表明“堆栈是空的”,这是我引用的所有数据结构书籍的演示方式。在生产代码中处理此问题的常规方法是什么?

引发异常比返回任何内容更合适。顺便说一句,您可以考虑子类化 list 以涵盖典型的 pushpoppeek:

class Stack(list):
    push = list.append
    peek = lambda self: self[-1]