görmek için bugün şaşırdı ki (Python 2.7.3 en azından), istisnasız aşağıdaki çalışır:"Dışarıda" tanımlanmamış bir ad neden NameError'ı yükseltmiyor?
>>> try:
... pass
... except ThingThatDoesNotExist:
... print "bad"
...
>>>
Bunu, REPL içinde nasıl benzer bir NameError
yükseltmek gerektiğini sanırdım izleyen:
>>> x = ThingThatDoesNotExist
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'ThingThatDoesNotExist' is not defined
Burada neler olup bittiği hakkında bir fikrin var mı?
Testiniz hiçbir şey yapmaya kalkmaz ve bu nedenle geçer. Bu yana, hiçbir zaman istisna dışında koşmaz. Yanılıyor olabilirim, fakat Python tanımlanana kadar tanımlanmamış değişkenleri dikkate almıyor mu? –
Tam olarak burada neler oluyor. Python, bu adın gerekene kadar herhangi bir şeye bağlı olup olmadığını kontrol etmez. – geoffspear
Yup. Sadece 'pass' değerini 'ValueError'ı yükseltmek' veya 'NameError' değerini alırsınız. – kwatford