#python #try-catch #except
#python #попробуйте-catch #за исключением
Вопрос:
Я говорю неожиданный, потому что я явно неправильно думаю о Try и None. Я попал сюда, потому что я вызывал функцию, чтобы вернуть значение для myVar, а затем тестировал с помощью Trys, чтобы убедиться, что функция не вернула None. Что-то вроде:
def Myfunct():
return "Some_URL"
MyVar = Myfunct()
try:
MyVar is not None:
pass
Я не смог получить ожидаемый результат TRY. Итак, я явно указал значения и протестировал снова.
Тестирование на отсутствие с помощью IF дает правильные результаты, но выполнение того же с помощью TRY дает неожиданные результаты, которые вытекают из приведенного ниже кода:
Type of My_Var is: <class 'str'> with value: Some_URL
IF is None: False
IF is not None: True
TRY is None: True
TRY is not None: True
Оба значения Try равно None и Try не равно None возвращают True. Как это возможно? Чего я не понимаю в проверке, было ли установлено значение
My_Var = None
My_Var = "Some_URL"
print ("Type of My_Var is:", type(My_Var), "with value: ", My_Var)
if My_Var is None:
print ("IF is None: True")
else:
print ("IF is None: False")
if My_Var is not None:
print ("IF is not None: True")
else:
print ("IF is not None: False")
try:
My_Var is None
print ("TRY is None: True" )
pass
except Exception as e:
print ("TRY is None: False" )
try:
My_Var is not None
print ("TRY is not None: True" )
pass
except Exception as e:
print ("TRY is not None: False" )
Комментарии:
1.
try
не имеет ничего общего с проверкой значения выражения. Это для обработки ошибок. (В частности, код вtry
блоке выполняется всегда — до тех пор, пока не будет выдано исключение.)
Ответ №1:
try
не заботится о том, является ли значение True
, False
None
или что-либо еще. try
выполняет блок кода, если ошибок не возникает, и откладывает на except
, если ошибки возникают.