Я выполняю проверку перед вызовом func2, чтобы убедиться, что действительно является float, если mode=aaa. Но это приводит к ошибке в func2, поскольку я определяю: float | Нет:
Код: Выделить всё
def func1(mode: str, a: float | None) -> None:
if mode == "aaa":
if a is None:
raise ValueError("a is None")
func2(mode, a)
def func2(mode: str, a: float | None):
if mode == "aaa":
print(a / 45.0) # pyright error: Operator "/" not supported for "None"
func1("aaa", 2.3)
Код: Выделить всё
def func1(mode: str, a: float | None) -> None:
if mode == "aaa":
if a is None:
raise ValueError("a is None")
func2(mode, a) # pyright error: Type "float | None" is not is not assignable to type "float"
def func2(mode: str, a: float):
if mode == "aaa":
print(a / 45.0)
func1("aaa", 2.3)
Код: Выделить всё
def func1(mode: str, a: float | None) -> None:
if mode == "aaa":
if a is None:
raise ValueError("a is None")
func2(mode, a)
def func2(mode: str, a: float | None):
if mode == "aaa":
assert isinstance(a, float)
print(a / 45.0)
func1("aaa", 2.3)
Подробнее здесь: https://stackoverflow.com/questions/793 ... ype-errors