如何定义一个永远不会在Python中匹配的变量?

时间:2011-12-19 12:20:04

标签: python

我的部分代码依赖于两个项目之间的比较,最终可能会与不存在的变量进行比较。因此,我将通过并为集合添加填充变量值,以确保它们都已定义并且可以进行比较。

但是,如果我添加填充值,我不希望它可以与任何其他值匹配。我使用None,但是其他值也可能是None。我想知道的是,是否有一种很好的方法可以确保填充值不匹配?已定义的值可以是任何值(因为它们是用户定义的)。

此外,我愿意接受有关解决此问题的其他方法的建议。

3 个答案:

答案 0 :(得分:8)

简单地说:

missing = object()

然后在比较中使用missing(它不会与任何其他对象进行比较,包括None)。

答案 1 :(得分:3)

似乎您可以定义要比较的自定义类。例如:

class NoValue:
    pass

if someValue is NoValue:
    doSomething()

比较应始终失败,因为someValue不会成为NoValue的实例

答案 2 :(得分:1)

我多次使用Ellipsis代替None来表示“默认值”左右......

无论如何,我不确定我完全理解你的问题:

  • 你在比较哪种物体? dict S'
  • 你能发一些代码吗?我没有看到“设置默认值以确保它们已被定义并且可以进行比较”。为什么不抓住KeyError例外,或使用.get() ..?