Portál AbcLinuxu, 25. dubna 2024 23:34


Dotaz: Pylint a jeho chyby

8.4.2012 23:05 Pythoff
Pylint a jeho chyby
Přečteno: 204×
Odpovědět | Admin
Ahoj, mám problém s pylint. Nepoužívám ho moc dlouho a nevím, jak moc přesně má fungovat. U některých zdrojáků mu můžu vyhovět, ale jinde není jak. Například W0603, Using the global statement. Odkdy je to problém a jak jinak nastavovat globální proměné? Jinak mám chyby E1103, když něco nezná. Pokud jsem něco špatně pochopil, rád se dozvím něco nového. Díky.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.4.2012 11:31 l4m4
Rozbalit Rozbalit vše Re: Pylint a jeho chyby
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vyhovět pylintu (nebo jinému lintu) může být samo o sobě cílem, pouze pokud ti to někdo nařídil. Je to jen nástroj poukazující na možná problematická místa v kódu.

Statement global vytváří skryté (resp. špatně viditelné) nelokální vazby v kódu, což je u delšího zdrojáku problém. Ale použití není chyba. Přečetl sis popis toho warningu?
W0603: Using the global statement Used when you use the "global" statement to update a global variable. PyLint just try to discourage this usage. That doesn't mean you cannot use it!
E1103 často vzniká třeba při použití jednoho jména proměnné pro více různých věcí (typů). Což není chyba, naopak může vést k efektivnější garbage collection bez explicitních del, když staré representace už nejsou zapotřebí.

V praxi se z výstupu pylintu filtrují známé nesmyslné chyby nebo se rovnou některé chyby vypínají globálně. Každý projekt má na kód jiné nároky a používá jiné věci, které se pylintu mohou nelíbit.
9.4.2012 12:06 pythoff
Rozbalit Rozbalit vše Re: Pylint a jeho chyby
Jak říkám, moc zkušeností nemám, tak ani nevím, jak moc se to běžně využívá, protože jsem se s tím ještě nesetkal. Líbilo se mi ale, že mi ukázal chyby, které jsem opravil a opravdu je ten kód potom lepší/čitelnější. Ani nevím, jestli je plný počet bodů cílem a nebo ne.

A dá se to nastavování globální proměnné nějak obejít? Když už mě upozorňuje, tak to klidně změním. Je to databázové spojení, které někde otevřu a jinde zavřu, taka nevím, jak to jinak udělat.

A tu E1103 mi to hází kvůli kursoru z DB: Instance of 'int' has no 'execute' member. Takže to jen nedokáže poznat a nebo dělám něco špatně?
9.4.2012 12:28 pythoff
Rozbalit Rozbalit vše Re: Pylint a jeho chyby
Tu E1103 jsem vyřešil. Šlo o problém, kdy se z funkce vrací více typů podle určitých podmínek.
9.4.2012 14:39 pythoff
Rozbalit Rozbalit vše Re: Pylint a jeho chyby
Už jsem vyřešil i ty globální proměnné. Co jsem tak pochopil, tak se v Pythonu vůbec global nepoužívá. Není to zakázané, ale prostě se to nedělá. Je to docela zajímavé.
9.4.2012 21:36 l4m4
Rozbalit Rozbalit vše Re: Pylint a jeho chyby
Já global používám běžně ve skriptech do stránky až dvou kódu a vyzývám na souboj každého, kdo by tvrdil, že to je chyba.

Nepoužívat global v Pythonu je zhruba jako nepoužívat sed, protože není objektově orientovaný. Cíl je vždy vyřešit problém pomocí k tomu vhodného nástroje. Neexistuje snad programovací konstrukce, jejíž použití je vždy nevhodné.
9.4.2012 22:44 pythoff
Rozbalit Rozbalit vše Re: Pylint a jeho chyby
Zrovna v podobných případech je to v pořádku. Protože ale dávám dohromady starší zdrojáky, které chci mít ve funkční aplikaci, zajímají mě i větší kousky. Nebude to nic malého, proto jsem to raději na začátku upravil. Na menší skripty je to ale jedno, i když teď už to stejně budu dělat bez global.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.