我是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没有赋值。
答案 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
或者您可以在相应的命名空间中使用hasattr
或getattr
。
答案 2 :(得分:-2)
您可以在检查之前将其定义为空字符串:
Count = ''
然后你可以测试......
if not Count:
Count = 0;