我不确定你想做什么。Python 是一种非常动态的语言;在实际分配或使用变量之前,通常不需要声明变量。我想你想做的只是
foo = None
这会将值分配给None
变量foo
。
编辑:你真正想做的就是这样:
#note how I don't do *anything* with value here
#we can just start using it right inside the loop
for index in sequence:
if conditionMet:
value = index
break
try:
doSomething(value)
except NameError:
print "Didn't find anything"
从这么短的代码示例中判断这是否真的是正确的风格有点困难,但它是一种更“Pythonic”的工作方式。
编辑:下面是 JFS 的评论(张贴在这里显示代码)
与OP的问题无关,但上面的代码可以重写为:
for item in sequence:
if some_condition(item):
found = True
break
else: # no break or len(sequence) == 0
found = False
if found:
do_something(item)
注意:如果some_condition()
引发异常则found
未绑定。
注意:如果 len(sequence) == 0 则item
未绑定。
上面的代码是不可取的。其目的是说明局部变量是如何工作的,即“变量”是否“定义”在这种情况下只能在运行时确定。首选方式:
for item in sequence:
if some_condition(item):
do_something(item)
break
或者
found = False
for item in sequence:
if some_condition(item):
found = True
break
if found:
do_something(item)