Podczas inicjowania słownika za d = {}
pomocą kodu Pycharm inspektor generuje ostrzeżenie, mówiąc:
To tworzenie słownika można przepisać jako dosłowne.
Jeśli go przepiszę, d = dict()
ostrzeżenie zniknie. Skoro {}
już jest słownikiem dosłowny, jestem całkiem pewny, że komunikat jest błędny. Ponadto wydaje się, że zarówno d = {}
i d = dict()
są ważne i pythonowy.
To pokrewne pytanie wydaje się stwierdzać, że wybór jest tylko kwestią stylu / preferencji: różnic między „d = dict ()” a „d = {}”
Dlaczego Pycharm miałby narzekać d = {}
?
AKTUALIZACJA:
Mac go przybił. Ostrzeżenie faktycznie dotyczyło wielu wierszy, a nie tylko tego, który został oflagowany.
Wygląda na to, że Pycharm szuka sekwencji kolejnych instrukcji, w których inicjujesz słownik, a następnie ustawiasz wartości w słowniku. Na przykład spowoduje to wyświetlenie ostrzeżenia:
d = {}
d['a'] = 1
Ale ten kod nie będzie:
d = {}
pass
d['a'] = 1
something
atrybutu bezpośrednio do literału słownika, zamiast przypisywać go w następnej linii.Odpowiedzi:
Jaki jest następujący kod do deklaracji w słowniku?
Myślę, że pycharm spowoduje błąd, jeśli masz coś takiego:
jak mogłeś napisać
BTW: Fakt, że błąd zniknie, jeśli użyjesz tej funkcji, niekoniecznie oznacza, że pycharm uważa, że
dict()
jest dosłowne. Może to po prostu oznaczać, że nie narzeka na:HTH!
źródło
dic = dict()
obejścia ...d = { 'aaa': f1(something) }
następnied = f2(d)
następnied = f3(d)
itd ... Lub alternatywnied['bbb'] = f2(d)
,d['ccc'] = f3(d)
...?d = {}
,d['a'] = A
,d['b'] = f(d['a'])
,d['c'] = f(d['b'])
, itd.d = {'a': A}
a następnie zachować sekwencję zgodnie z opisem?Można to wyłączyć w Ustawieniach projektu lub Ustawieniach domyślnych.
źródło
dla tych, którzy lubią (tak jak ja) inicjować słowniki za pomocą jednej operacji
zamiast wielu linii takich jak
w końcu skończyło się na tym:
Pycharm nie narzeka na to
źródło
Słownik mógł zostać utworzony bezpośrednio, bez inicjowania ich, a następnie ponownego przypisywania nowych wartości.
źródło
Mam sytuację, w której to ostrzeżenie mnie denerwuje. W moim przypadku zapełniam mój słownik częściowo literałami, a częściowo z krotki przez funkcję, taką jak:
Tak więc, chyba że utworzę zmienne tymczasowe dla danych wyjściowych get_other_values, PEP8 wygeneruje to ostrzeżenie, mimo że tworzę dykt z literałami. I nie mogę przypisać klawiszy cid do literału, ponieważ wartości są wyprowadzane jako krotka.
źródło