But one thing that often confuses people : function naming. The standard library is kind of inconsistent. Some functions are separated by underscores and others aren't.
I think there are a number of reasons for this:
* Despite PEP 8's age, significant chunks of the standard library predate it * Modules which are thin wrappers around various C libraries tend to mimic those libraries' names * Modules which were heavily influenced by similar libraries from other languages often carry over spelling * PEP 8 hasn't always been a checklist item for inclusion (not sure it even is today) * Sometimes Cerberus was sleeping, and they snuck past him
In any case, once a module makes it into the standard library, the cost of changing spelling outweighs the benefits of slavish adherence to PEP 8.