In other languages methods which start with an underscore are private methods. This means, that this methods can not be used from other packages. In python, there is no such limitation. But some programmers use the the underscore to show, that this method should not be used in other modules. I don't like this because 1. If I don't wont, that other programmers to use a method, I should document it in the docstring, not in the name of the method. 2. I do not know, what other programmers want. For example, someone could deviate your class and rewrite this methods.

I use the variablenames with a starting underscore for two things. To import a original-class I want to rewrite. For example the django-class-based-views in utils/views.py, and for caching- or temporary variables.