Тестирование Python 3 на None с IF или TRY. Неожиданные результаты - PullRequest
0 голосов
/ 08 марта 2019

Я говорю неожиданно, потому что явно не думаю о Try and None правильно. Я попал сюда, потому что я вызывал функцию, возвращающую значение для MyVar, а затем тестировал с помощью Trys, чтобы убедиться, что функция не вернула None. Что-то вроде:

def Myfunct():
    return "Some_URL"
MyVar = Myfunct()
try:
    MyVar is not None:
    pass

Я не смог получить ожидаемый результат TRY. Таким образом, я явно указал значения и проверил снова. Тестирование None с помощью 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

Обе попытки равны None, а попытки - нет 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 Ответ

0 голосов
/ 08 марта 2019

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

Подробнее здесь

...