Почему `Optional[int]` несовместим с `float | Нет`? [закрыто]Python

Программы на Python
Anonymous
Почему `Optional[int]` несовместим с `float | Нет`? [закрыто]

Сообщение Anonymous »

У меня есть эта функция:

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

def chunk_load(filename: str, chunksize=1000, max_chunks:Optional[int]=None, expected_chunks=Optional[int]) -> pd.DataFrame:
display_string = f'Loading {os.path.basename(filename)}|chunksize={chunksize}'
if max_chunks is None:
df = pd.concat([chunk for chunk in tqdm(pd.read_csv(filename, chunksize=chunksize), desc=display_string, total=expected_chunks)]) # pylance says that `total` is not compatible
else:
chunks = []
for _ in tqdm(range(max_chunks), desc=display_string):
try:
chunk = next(pd.read_csv(filename, chunksize=chunksize))
chunks.append(chunk)
except StopIteration:
break
df = pd.concat(chunks)
return df
Pylance жалуется, что «UnionType» несовместим с типом «float | None»
Изображение

Я создал небольшой пример, который, как мне казалось, имитирует ту же динамику:

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

from typing import Optional

def foo(foo_val: Optional[float]) -> None:
pass

def trouble_foo(trouble_val: float | None) -> None:
pass

def bar(bar_val: Optional[int]) -> None:
return foo(bar_val)

def trouble_bar(trouble_bar_val: Optional[int]) -> None:
return trouble_foo(trouble_bar_val)

bar(35)
trouble_bar(42)
Pylance не показывает ошибок ни для одного из этих простых примеров.
Почему для функции chunk_load передача в необязательном[int] для параметра total это неправильно, поскольку он ожидает число с плавающей запятой | Нет, но в простом примере это вполне нормально?

Подробнее здесь: https://stackoverflow.com/questions/786 ... float-none

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