Тест на сдерживание против буквального списка (y в ["foo", "bar"]) не сузится тип значенияPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Тест на сдерживание против буквального списка (y в ["foo", "bar"]) не сузится тип значения

Сообщение Anonymous »

Следующий MWE приводит к ошибке Mypy.

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

from typing import Literal

def expects_literal(x: Literal["foo", "bar"]) -> None:
print(f"{x=}")

def fails_mypy_check(y: str) -> None:
if y in ["foo", "bar"]:
expects_literal(y)
else:
print("format incorrect")
< /code>
Результаты: < /p>
mwe.py:8: error: Argument 1 to "expects_literal" has incompatible type "str"; expected "Literal['foo', 'bar']"  [arg-type]
Но предложение охраны в строке 7 гарантирует, что y является одним из приемлемых значений. Документы Mypy называют это «проверкой исчерпывания» и подразумевают, что это следует поддерживать.>

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

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

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

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

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

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

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