Как напечатать bool

Это компилируется нормально.

def f(x: bool) -> bool:
    return x

f('a')

Как мне сделать так, чтобы это не сработало?

--

StackOverflow не уверен, что приведенный выше вопрос достаточно ясен. Поэтому я пишу еще немного и добавляю ссылку на стандартную библиотеку (ввод).


person dmvianna    schedule 01.08.2018    source источник
comment
Компилируется нормально? Конечно, это так. Вы запускали mypy?   -  person Jared Smith    schedule 01.08.2018
comment
У меня отлично работает: ошибка: аргумент 1 для f имеет несовместимый тип str; ожидаемый бул. Вы запускаете mypy в коде для проверки типов или надеетесь, что это сделает интерпретатор Python? (это не так)   -  person James Elderfield    schedule 01.08.2018
comment
Вы можете написать декоратор, который вы можете применить к своим функциям, который проверяет подсказки типов и что-то с ними делает. Либо поднимая ошибки на входах, либо автоматически выполняя какое-то преобразование.   -  person Patrick Haugh    schedule 01.08.2018
comment
@PatrickHaugh отличная идея, но лишает смысла статический анализ. Тем не менее, вы можете сделать его недействующим в производстве, если он проверит переменную окружения.   -  person Jared Smith    schedule 01.08.2018
comment
Кстати, ожидать, что интерпретатор будет проверять подсказки, которые вы вводите, является разумным ожиданием, но, поскольку это будет выполняться во время выполнения и будет дорогостоящим, есть внешний инструмент mypy, который вы запускаете для статического анализа вашего кода. Извините, если мой первый комментарий был слишком резким.   -  person Jared Smith    schedule 01.08.2018
comment
@JaredSmith В том-то и дело, что эти аннотации можно использовать для чего угодно, а не только для статического анализа.   -  person Patrick Haugh    schedule 01.08.2018
comment
@PatrickHaugh правда правда.   -  person Jared Smith    schedule 01.08.2018