Выяснить, что возвращает метод, возвращающий пустой хэш при некотором условии

Я пытаюсь понять, как заставить это работать:

def someMethod() -> dict[any, any]:
    if not os.path.exists('some path'):
        return {}

    config = {'a': 1, 'b': 2}
    return config

Я не думаю, что это правильно. Увидел эту ошибку - Declared return type, "dict[Unknown, Unknown]", is partially unknownPylance

Идея состоит в том, чтобы вернуть пустой словарь, если путь не существует (или при каком-то условии), или исправить словарь парами ключ-значение.

Есть идеи?

Вы могли бы немного убрать это с помощью return {} вместо местного, который вы все равно топнете позже.

tadman 29.05.2023 17:03

имеет смысл, удалил его в вопросе, а также в моем локальном коде. Спасибо! Любые идеи о том, как заставить работать возвращаемый тип

scorpion35 29.05.2023 17:09
stackoverflow.com/questions/61997937/… может быть актуально
Andrew McClement 29.05.2023 17:19

С практической точки зрения альтернативой может быть dict[string,int].

Andrew McClement 29.05.2023 17:21
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
4
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нижний регистр any — это встроенная функция Python, а не тип. Вместо этого вам нужно импортировать заглавную Any из модуля набора текста.

from typing import Any
import os

def someMethod() -> dict[Any, Any]:
    if not os.path.exists('some path'):
        return {}

    config = {'a': 1, 'b': 2}
    return config

Поскольку возвращаемый dict всегда является dict[str, int], это может быть лучше — или даже typing.Mapping[str, int], если вызывающая сторона не предназначена для его изменения.

Samwise 29.05.2023 18:30

Другие вопросы по теме