Аннотации типа Python, возвращает тип или нет для ошибки - PullRequest
0 голосов
/ 13 июня 2019

Как Pythonic способ напечатать аннотацию функции, чтобы указать "возвращает тип xxxx или None для ошибки?"

У меня часто есть функции, которые возвращают данные одного типа - или None, чтобы указатьошибка.например,

def GoodName(name):
    if name = '':
        return None
    if name = 'Kevin':
        return 'good'
    else:
        return 'meh'

Если я добавляю аннотации типов, это выглядит следующим образом:

def GoodName(name:str) -> Optional[str]:
    if name = '':
        return None
    if name = 'Kevin':
        return 'good'
    else:
        return 'meh'

Похоже, что это нормально для функции, возвращающей строку или нет, но еслифункция не возвращает строку, это НЕ ОК.В действительности предполагается, что она возвращает строку.

Параметр «Необязательно» загрязняет тип результата, и любая другая проверка типов, использующая возвращаемое значение, также должна иметь дело с «Необязательно».

Iиспользуйте много библиотек, где описание функций что-то вроде «возвращает положительное целое число или None для ошибки», поэтому эта парадигма None, указывающая на ошибку, влияет на большую часть последующей печати. ​​

  • Есть краткий способсказать, что функция возвращает тип, за исключением случаев ошибки, которая не отражается в более позднем коде?
  • Было бы более Pythonic возвращать что-то вроде пустой строки, чтобы указать на ошибки, чтобы не "загрязнять"печатать вниз по течению?(или неверное целое число, если тип возвращаемого значения целое)
  • Или это Pythonic способ выдать ошибку и потребовать, чтобы вызывающий ее перехватил?
...