[Python-Dev] PEP 8 and optional underscores

Raymond Hettinger python at rcn.com
Wed Jun 11 20:03:17 CEST 2008


"Function names should be lowercase, with words separated by underscores as necessary to improve readability." -- PEP 8

If I'm reading this correctly, then underscores are not required  everywhere.  Can some of these be shortened?

    function:: active_count()
    method:: Thread.get_name()
    method:: Thread.is_alive()
    method:: Thread.is_daemon()
    method:: Thread.set_daemon(daemonic)

In some cases, the mental pronounciation changes and affects my perception of meaning.  For example, Thread.setName or 
Thread.setname both feel like a setter to me, but Thread.set_name causes a mental pause and a momentary double-take (is it the name 
of a set?).

A few months ago, I think there was a PEP 8 discussion rejecting suggestions to make underscores required everywhere (leading to 
getattr-->get_attr, iteritems-->iter_items,  staticmethod->static_method, setdefault->set_default, popitem->pop_item, 
splitlines->split_lines etc.)

Perhaps underscores should only be used when the contracted form lacks clarity.

Food for thought,


Raymond 



More information about the Python-Dev mailing list