Yakalanan istisnayı bağlamak için bu ad kullanıldığında, Python'un bir ad bağlamasının silinmesini nasıl engelleyebilirim? davranışındaki bu değişiklik Python'a ne zaman geldi?`except` cümlecikindeki ad ekleme yan tümcesinden sonra silindi
Python 2 ve Python 3 hem çalıştırmak için kod yazıyorum: Python dış kapsamda bir isimdir bilmesi için açıkça önce istisna işleme bağlı olduğu
exc = None
try:
1/0
text_template = "All fine!"
except ZeroDivisionError as exc:
text_template = "Got exception: {exc.__class__.__name__}"
print(text_template.format(exc=exc))
Bildirimi exc
söyledi.
, bu güzel çalışır ve exc
adı kullanılacak hayatta format
çağrı ::
Got exception: ZeroDivisionError
Büyük, bu benim istediğim tam olarak ne: except
fıkra adını bağlar ve istisna nesnesine başvurmak için işlevin geri kalanında bu adı kullanabilirim. görünüşe exc
::
Traceback (most recent call last):
File "<stdin>", line 8, in <module>
NameError: name 'exc' is not defined
Neden exc
dış kapsamdan silinir bağlayıcı olduğunu silinir bağlanma nedeniyle
, format
çağrı başarısız? maddesinden sonra kullanmak üzere ad bağlama özelliğini güvenilir şekilde korumak için kastediyoruz?
Bu değişiklik Python'a ne zaman geldi, nerede belgelendi?
Bunu Python 3'te bir hata olarak bildirme hakkım olur mu?
:
try
/except
kodu için sökme de açıkça belgeler ile yapılan yukarıdaki ifadeleri destekler. 'Except' cümlesi içinde başka bir değişkene' exc 'atarsanız, oraya alabilirsiniz. Olası bir kopya https://stackoverflow.com/questions/29268892/python-3-exception-deletes-variable-in-enclosing-scope-for-unknown-reason Bu cevabı yapmam gerektiğini biliyordum ... lol –