pylint, was Re: pygame - importing GL - very bad...

Steven D'Aprano steve+comp.lang.python at pearwood.info
Wed Jan 2 18:52:27 EST 2013


On Wed, 02 Jan 2013 09:26:32 -0500, Dave Angel wrote:

> On 01/02/2013 09:09 AM, someone wrote:
>> On 01/02/2013 01:07 PM, Peter Otten wrote:

>>> pylint wants global names to be uppercase (what PEP 8 recommends for
>>> constants) or "special" (two leading and two trailing underscores):
>>>
>>> THATS_OK = 42
>>> __thats_ok_too__ = object()
>>> but_thats_not = "spam"
>>
>> OMG... I don't want to type those underscores everywhere... Anyway,
>> thank you very much for explaining the meaning of what it wants...
>>
>>
>>
>>
> Global const values should be ALL_CAPS, so it's obvious that nobody
> intends to modify them.

Like math.pi I suppose? *wink*


> It's the non-const global attributes that expect to be underscored.

Pylint is wrong here.

The double-leading-and-trailing-underscore naming scheme is reserved for 
Python itself. PEP 8 explicitly states not to invent your own "dunder" 
names:

  __double_leading_and_trailing_underscore__: "magic" objects or
  attributes that live in user-controlled namespaces. E.g. __init__,
  __import__ or __file__. Never invent such names; only use them as
  documented.


The section on global variables does not say to use dunder names:

http://www.python.org/dev/peps/pep-0008/#id31


If pylint says that global variables should be named like "__variable__", 
that is explicitly going against PEP 8.


> You shouldn't have to use those underscores very often.  After all,
> there is seldom a need for a non-const global value, right?  Don't think
> of it as a pylint problem, but as a hint from pylint that perhaps you
> should use fewer globals.

That at least is good advice.


-- 
Steven



More information about the Python-list mailing list