如果在一個循環中,是否有可能在循環的後續迭代中實例化要處理的對象,並且在循環的作用域已經保留時仍然可用?忘記聲明變量
這裏是什麼,我認爲可能運行的一個簡單例子:
>>> 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)
...
>>>
我懷疑什麼,我一直在努力這樣做實際上是禁止的,但我不明白爲什麼會這樣。
請問有人可以爲我提供一些照明嗎?
編輯:
所以第二個方式工作,但它是非常長篇大論。有沒有快速的方法?
我認識到它打敗了問題的重點,但是你當然可以在循環之前實例化它? – Ben 2012-08-10 20:08:52
在你希望得到的循環之前簡單定義'r = []'有什麼好處? – DSM 2012-08-10 20:16:10
@Ben和DSM,部分是第一次嘗試工作的滿足感!但也不必中止代碼輸入,因爲我忘記了定義。另外,我通常只是看看是否有用,而我似乎因爲它而重新打字。 – jon 2012-08-10 20:22:11