Есть ли встроенный способ подтвердить, что значение не равно None?Python

Программы на Python
Anonymous
Есть ли встроенный способ подтвердить, что значение не равно None?

Сообщение Anonymous »

У меня есть этот код

Код: Выделить всё

if foo:
bar = 1
else:
bar = maybe_return_int(baz)
Тип возвращаемого значения Maybe_return_int является необязательным[int], поэтому mypy жалуется

Код: Выделить всё

error: Incompatible types in assignment (expression has type "int | None", variable has type "int")  [assignment]
Однако в контексте моего кода я знаю, что Maybe_return_int(baz) никогда не вернет None. Чтобы заставить его выполнять проверку типа, мне нужно написать вот такую ​​запутанную штуку:

Код: Выделить всё

if foo:
bar = 1
else:
bar_maybe_none = maybe_return_int(baz)
assert bar_maybe_none is not None
bar = bar_maybe_none
Есть ли более короткий способ написать это? Мне бы хотелось, чтобы существовала функция Assert_not_none, которую я мог бы использовать следующим образом:

Код: Выделить всё

if foo:
bar = 1
else:
bar = assert_not_none(maybe_return_int(baz))
Могу ли я написать такую ​​функцию Assert_not_none?
Я мог бы использовать приведение, но мне нравится, что Assert фактически выполнит проверку ( по крайней мере, когда утверждения не отключены) и что с утверждением мне не нужно писать тип (в моем реальном коде вводить более многословно, чем просто int).

Подробнее здесь: https://stackoverflow.com/questions/790 ... s-not-none

Вернуться в «Python»