是否可以像这样在Python中声明一个变量?:
var
使它初始化为None?Python似乎允许这样做,但一旦你访问它,它就崩溃了。这可能吗?如果不是,为什么?
编辑:我想这样做的情况下:
value
for index in sequence:
if value == None and conditionMet:
value = index
break
相关问题
为什么函数可以修改调用者感知到的一些参数,而不能修改其他参数?
Python变量声明
另请参阅
Python名称和值
其他语言有“变量”
在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等。
我不知道你想干什么。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)