忘记申报变量

jon*_*jon 1 python interpreter

如果在循环内部,是否可以在循环的后续迭代期间实例化要操作的对象,并且在循环的范围被保留时仍然可用?

这是我认为可行的一个简单示例:

>>> 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
Run Code Online (Sandbox Code Playgroud)

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

>>> for i in range(2):
...   try:
...     r = r
...   except NameError:
...     r = []
...   r.append(i)
...
>>>
Run Code Online (Sandbox Code Playgroud)

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

有人可以为我点上这些吗?

编辑:

所以第二种方式有效,但它很长.有快速的方法吗?

Ign*_*ams 6

这不是禁止的,但积极劝阻.除极端情况外,绝不NameError应该被抓住; 总是将名称绑定在循环之外,即使是.None