是否可以像这样在Python中声明一个变量?:
var
使它初始化为None?Python似乎允许这样做,但一旦你访问它,它就崩溃了。这可能吗?如果不是,为什么?
编辑:我想这样做的情况下:
value
for index in sequence:
if value == None and conditionMet:
value = index
break
相关问题
为什么函数可以修改调用者感知到的一些参数,而不能修改其他参数?
Python变量声明
另请参阅
Python名称和值
其他语言有“变量”
我不知道你想干什么。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"
从如此短的代码示例中判断这是否是正确的风格有点困难,但它是一种更“python”的工作方式。
编辑:下面是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,则项目被解除绑定。
上述代码是不可取的。它的目的是说明局部变量是如何工作的,即在这种情况下,“变量”是否“定义”只能在运行时确定。
更可取的方法:
for item in sequence:
if some_condition(item):
do_something(item)
break
Or
found = False
for item in sequence:
if some_condition(item):
found = True
break
if found:
do_something(item)
我不知道你想干什么。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"
从如此短的代码示例中判断这是否是正确的风格有点困难,但它是一种更“python”的工作方式。
编辑:下面是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,则项目被解除绑定。
上述代码是不可取的。它的目的是说明局部变量是如何工作的,即在这种情况下,“变量”是否“定义”只能在运行时确定。
更可取的方法:
for item in sequence:
if some_condition(item):
do_something(item)
break
Or
found = False
for item in sequence:
if some_condition(item):
found = True
break
if found:
do_something(item)