Podczas korzystania try-z wyjątkiem pętli for kontekście poleceń wykonywanych do tej pory są oczywiście wykonane zWyjątek podczas sprawdzania listy. Czy wyniki pośrednie są przechowywane w dowolnym miejscu?
a = [1, 2, 3, 'text', 5]
b = []
try:
for k in range(len(a)):
b.append(a[k] + 4)
except:
print('Error!')
print(b)
wyników z
Error!
[5, 6, 7]
Jednak samo nie jest prawdą dla listowych
c=[]
try:
c = [a[k] + 4 for k in range(len(a))]
except:
print('Error!')
print(c)
Rezultatem jest
Error!
[]
Czy lista pośrednia, zbudowana przed wystąpieniem wyjątku, była przechowywana w dowolnym miejscu? Czy jest dostępny?
Nie sądzę. – edwinksl
Wartości prawdopodobnie nadal * znajdują się w pamięci * gdzieś, ale ponieważ przypisanie do 'c' nie powiodło się (ponieważ tworzenie wartości nie powiodło się), nie masz żadnego uchwytu w tej pamięci. Twoja klauzula "try" nie powiodła się, nie możesz oczekiwać, że coś w niej istnieje. W pierwszym przypadku przynajmniej 'b' został skonstruowany poza' try', więc jest gwarantowany. - Próbuję powiedzieć: ty * nie powinieneś tego * chcieć. – deceze
BTW, dlaczego nie "[i + 4 for i in a]' ...?! – deceze