Skip to main content
 首页 » 编程设计

python之忘记声明变量

2025年05月04日10daizhj

如果在循环内,是否可以实例化要在循环的后续迭代中操作的对象,并且在离开循环范围时仍然可用?

这是我认为可能有效的一个简单示例:

>>> for i in range(2): 
...   r = [] if r is None else r 
...   r.append[i] 
... 
Traceback (most recent call last): 
  File "<stdin>", line 2, in <module> 
NameError: name 'r' is not defined 

这是我第二次尝试使用 NameError 异常:

>>> for i in range(2): 
...   try: 
...     r = r 
...   except NameError: 
...     r = [] 
...   r.append(i) 
... 
>>> 

我怀疑我一直试图做的事情实际上是被禁止的,但我不明白为什么会这样。

有人可以帮我解释一下吗?

编辑:

所以第二种方式可行,但它非常冗长。有没有快速的方法?

请您参考如下方法:

不禁止,但不鼓励这样做。 NameError 除非极端情况,否则永远不要被捕获;始终在循环外绑定(bind)名称,即使是 None。