为什么有人会使用 set.remove() 而不是 set.discard()

Tec*_*rtz 8 python set operation

我目前正在学习 Python,我只是想知道在什么情况下会使用.remove()而不是.discard()set. 因为.discard()如果元素不存在,则从集合中删除元素时不会引发错误,那么使用它不是更好吗?

Ous*_*uss 14

错误被提出并被捕获和处理。它们不是烦恼或障碍。它们是识别概念错误的工具,或者指示需要注意的意外行为,或者处理无法控制的系统部分,或者用于控制 python 代码流的工具。学说说 \xe2\x80\x9efail 而不是 test\xe2\x80\x9c 即让代码引发您期望的异常,而不是使用 if 语句进行测试。

\n

.discard()在and的情况下.remove():如果值不存在,.discard()调用.remove()会静默捕获异常并静默返回。它\xe2\x80\x99 是静音.remove(). 它可能适合您的特殊用例。其他用例可能需要在值不存在时引发异常。

\n

因此.remove(),一般情况下,开发人员可以控制异常,并且.discard()只是开发人员不需要捕获该异常的特殊用例。

\n


小智 0

就像您所说的 .discard() 方法不会引发任何错误,另一方面 .remove() 方法会引发任何错误。所以这要看情况。如果您不想使用 try- except 块捕获 ValueError 来执行其他操作,则可以使用丢弃方法。