PyLint results?

Marc 'BlackJack' Rintsch bj_666 at gmx.net
Fri Apr 21 17:13:40 EDT 2006


In <mailman.4847.1145641777.27775.python-list at python.org>, Michael
Yanowitz wrote:

> 2) C:  0: Missing required attribute "__revision__"
>    What is this? Is that for CVS? I don't use CVS (we use SVN). I have not
>    seen any sample code which includes this tag yet. But if I include
>    __revision 1.0  somewhere in the code it will remove that warning?

AFAIK that's a requirement at Logilab.  They use the tool themselves.  :-)

> 3) W:230:readDiscreteData: Using the global statement
>    What is wrong with using the global statement? I know the use of Globals
>    should be discouraged, but often they can't be avoided.

I guess more often than you think.

>    Suppose I have a constant. In C or C++, I could just use a #define and
>    it would be known throughout the whole file. In Python, there isn't a
>    similar construct, so rather than creating a large parameter list, of
>    constants, I like to use globals.

If they are constants then you don't rebind them from within functions or
methods, right?  Then you don't need ``global``.  This works without
problems::

 ANSWER = 42

 def spam():
     print ANSWER


> 4) W:261:getDiscreteData: Catch "Exception"
>    What is wrong with that?

It catches *any* exception.  For example `KeyboardInterrupt` which can
lead to programs that can't be stopped with CTRL+C or `ZeroDivisionError`
or `NameError` so programming errors are silenced.

> 5) R:547:readDiscreteData: Too many branches (28/12)
>    Python doesn't have the switch/case statements that C/C++ have. So I
>    could have a large block if/elif/else statements.
>    Is there any way to avoid that?

One idiom is to create a dictionary with the values to "switch on" mapped
to callables to handle the case.

> 6) R:722:waitDiscretes: Too many local variables (38/15)
>    That's new to me. What is wrong with too many local variables?

Well, they are just to many.  :-)

> 7) W:933:sendStringToSocket: Redefining name 'nPortNumber' from outer scope
> (line
>    What is wrong with using the same variable name in a function that is
> used by its caller?

It's not used by the caller but in the outer scope.  It may confuse the
reader seeing `ham` in the outer scope and then `ham` in the function
without noticing that this is actually another `ham`.

> 8) W:995:sendStringToSocket: Used builtin function 'map'
>    Is that a problem?

`map` is "deprecated" in favor of list comprehensions.  A matter of taste…

Ciao,
	Marc 'BlackJack' Rintsch



More information about the Python-list mailing list