是否可以像这样在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 3.6+中,你可以使用变量注释:

https://www.python.org/dev/peps/pep-0526/#abstract

PEP 484引入了类型提示,也就是类型注释。虽然它的主要关注点是函数注释,但它也引入了类型注释的概念来注释变量:

# 'captain' is a string (Note: initial value is a problem)
captain = ...  # type: str

PEP 526旨在为Python添加注释变量类型的语法(包括类变量和实例变量),而不是通过注释来表示它们:

captain: str  # Note: no initial value!

这似乎更直接地符合你的问题“在Python中是否可能只声明一个变量而不赋值?”

注意:Python运行时不强制函数和变量类型注释。它们可以被第三方工具使用,如类型检查器、ide、linter等。

var_str = str()
var_int = int()

好吧,如果你想检查一个变量是否已定义,那么为什么不检查它是否在locals()或globals()数组中?你的代码重写了:

for index in sequence:
   if 'value' not in globals() and conditionMet:
       value = index
       break

如果它是您正在寻找的局部变量,则将globals()替换为locals()。

如果我对你的例子理解正确,你不需要在If语句中引用“value”。一旦它可以被设置为任何值,就会跳出循环。

value = None
for index in sequence:
   doSomethingHere
   if conditionMet:
       value = index
       break 

为什么不这样做呢:

var = None

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

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