В моем понимании того, как попытаться / исключить / наконец-то работать в Python, может быть ошибка, но я ожидаю, что следующее будет работать, как описано в комментариях.
from sys import argv
try:
x = argv[1] # Set x to the first argument if one is passed
finally:
x = 'default' # If no argument is passed (throwing an exception above) set x to 'default'
print(x)
Я ожидаю, что файлвыше (foo.py) должен печатать default
при запуске как python .\foo.py
и печатать bar
при запуске как python .\foo.py bar
.
Функциональность bar
работает, как и ожидалось, однако default
поведение не работает;если я запускаю python .\foo.py
, я получаю IndexError:
Traceback (most recent call last):
File ".\foo.py", line 4, in <module>
x = argv[1]
IndexError: list index out of range
В результате у меня есть два вопроса:
- Это ошибка или ожидаемое поведение вблок try-finally?
- Должен ли я просто никогда не использовать try-finally без предложения
except
?