Тестирование Python 3 на отсутствие с помощью IF или TRY. Неожиданные результаты

#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 блоке выполняется всегда — до тех пор, пока не будет выдано исключение.)

2. Может быть, вы путаете try с assert ?

Ответ №1:

try не заботится о том, является ли значение True , False None или что-либо еще. try выполняет блок кода, если ошибок не возникает, и откладывает на except , если ошибки возникают.

Смотрите больше здесь