Ввод для редкого случая. Нет значения.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ввод для редкого случая. Нет значения.

Сообщение Anonymous »

Чтобы избежать проблем с набором текста, я часто сталкиваюсь с одной и той же проблемой.
Например. У меня есть функция x, которая очень редко возвращает значение None, во всех остальных случаях она возвращает int.

def x(i: int) -> Union[int, None]:
if i == 0:
return
return i

def test(i: int):
a = x(i)
# typing issue: *= not supported for types int | None and int
a *= 25


x используется очень часто в кодовой базе, и большую часть времени i уже сто раз проверялось, что x(i) действительно вернет int, а не None .
Использование его как int сразу приводит к появлению предупреждений о вводе - например. вы не можете умножить возможное значение None.
Как лучше всего поступить в этом случае?
Идеи, которые я рассмотрел:
  • Нет смысла проверять его на None, если a равно None: return, поскольку оно уже известно .
  • a *= 25 # type: ignore сделает неизвестным типом.
  • a = x(i) # type: int уберет предупреждение. Но создаст новое предупреждение «int | None не может быть присвоено int»
  • a = cast(int, x(i)), еще особо не тестировал.
Обычно я меняю тип возвращаемого значения x на просто int code>, добавив ignore в return # type: ignore и упомянув в строке документации, что он может возвращать None, это помогает избежать загрязнения всей кодовой базы предупреждениями о типах. Это лучший подход?
def x(i: int) -> int:
"""might also return `None`"""
if i == 0:
return # type: ignore
return i


Подробнее здесь: https://stackoverflow.com/questions/781 ... none-value
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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