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

Steven D'Aprano steve+comp.lang.python at
Thu Jan 3 00:52:27 CET 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" 

  __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

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

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.


More information about the Python-list mailing list