Python - 检查空对象

时间:2013-11-15 21:09:06

标签: python object null

我是Python的新手,我不明白这是如何工作的。我想在Python中为一个对象赋值,如果它当前是未定义的,但是当我运行if语句时,它会因为没有定义对象而失败(Duh。)。

我该如何解决这个问题?

...
key = raw_input('What is your key?: ')

for i in key:
    print i
    if Count is None:
        Count = 0 

Traceback (most recent call last):
  File "Client.py", line 7, in <module>
    if Count is None:
NameError: name 'Count' is not defined

我该怎么做才能解决这个看似简单的问题?

上面的代码是垃圾,我正在测试它是为了理解基本的Python功能。它让我回到了为对象分配值的问题,这是我之前遇到过的问题。以下是我的思考过程。

好的,显然我不是在这里解释得很好。我不确定它是什么,但有些事情让我不得不为一个尚未相关的对象赋值。 仅为了可读性,我想在语句中使用它之前检查对象的空值。从我在下面看到的内容来看,这将是必要的,而且我很可能只需要处理。在我看来,这......

...
object = 'ObligatoryValue'

for i in Data
    Object = Data[0] # Now the object is relevant
    ...

看起来比这更好......

...
for i in Data
    if Object is None:
        Object = Data[0] 
    ...

为了进一步解释推理,我从事数据操作。我第一次遇到这个问题的时候是在比较两个对象。如果试图做某事......

...
Object = Line[0]
if UndefinedObject == Object
    do = 'something'
...

但是我总是会返回一个错误,因为UndefinedObject没有赋值。

3 个答案:

答案 0 :(得分:5)

您可以明确地将Count设置为None,首先:

Count = None

for i in key:
   if Count is None:
       Count = 0

但在这种情况下,只需指定0开头:

Count = 0

for i in key:

答案 1 :(得分:2)

这几乎肯定是一个非常糟糕的主意。正如大家在评论中所解释的那样,Martijn Pieters的答案显示,几乎可以做任何你想做的事情。

此外,这是“正在检查空对象”。 “空对象”是None。 Martijn的答案显示了如何做到这一点。这是检查一个根本没有绑定的变量,而不是绑定到空对象的变量。

无论如何,Python并没有阻止你这样做,它只是不容易(因为它几乎总是一个坏主意,但偶尔也是必要的)。

所以,这是如何做到的:

for i in key:
    try:
        Count
    except NameError:
        Count = 0

或者,如果您需要知道它是否存在于特定范围内 - 例如,您只关心全球 Count,而不是Count任何地方:< / p>

for i in key:
    if 'Count' not in globals():
        Count = 0

或者您可以在相应的命名空间中使用hasattrgetattr

答案 2 :(得分:-2)

您可以在检查之前将其定义为空字符串:

Count = ''

然后你可以测试......

if not Count:
    Count = 0;