是否可以像这样在Python中声明一个变量?:

var

使它初始化为None?Python似乎允许这样做,但一旦你访问它,它就崩溃了。这可能吗?如果不是,为什么?

编辑:我想这样做的情况下:

value

for index in sequence:

   if value == None and conditionMet:
       value = index
       break

相关问题

为什么函数可以修改调用者感知到的一些参数,而不能修改其他参数? Python变量声明

另请参阅

Python名称和值 其他语言有“变量”


当前回答

我知道这有点晚了,但是在python3中,你可以使用

uninitialized_value:str

# some code logic

uninitialized_value = "Value"

但是使用这个技巧要非常小心,因为

uninitialized_value:str

# some code logic

# WILL NOT WORK
uninitialized_value += "Extra value\n"

其他回答

是否可以在Python中声明一个变量(var=None):

def decl_var(var=None):
if var is None:
    var = []
var.append(1)
return var

为什么不这样做呢:

var = None

Python是动态的,所以你不需要声明;它们自动存在于分配给它们的第一个作用域中。所以,你所需要的只是上面提到的一个常规的赋值语句。

这很好,因为您将永远不会得到一个未初始化的变量。但是要注意——这并不意味着您不会得到错误的初始化变量。如果你init一些东西为None,确保这是你真正想要的,如果可以的话,分配一些更有意义的东西。

我不知道你想干什么。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)

我知道这有点晚了,但是在python3中,你可以使用

uninitialized_value:str

# some code logic

uninitialized_value = "Value"

但是使用这个技巧要非常小心,因为

uninitialized_value:str

# some code logic

# WILL NOT WORK
uninitialized_value += "Extra value\n"

你看起来像在用Python写C语言。如果你想在一个序列中找到一些东西,Python有内置的函数来做这件事,比如

value = sequence.index(blarg)