As Andrés Pérez-Albela H. has mentioned, double underscores are usually used for "magic methods" like __init__(). In that usage, they lead and trail the method name. A single underscore in front of a method (or variable) name, like _index, usually means "this is a private member variable or a private method, and should not be used by other code". This is simply convention and does not have any special meaning to the Python interpreter, whereas some double-underscore methods do have special meaning.
Now, as for the question you asked: __ (a double underscore) as a variable name is not a normal thing in Python coding. The more usual convention is to use _ (a single underscore) for any variable whose contents you don't need. See What is the purpose of the single underscore "_" variable in Python? for more details.
However, there are sometimes reasons why a programmer might want to avoid using _ as a variable name. Specifically, if he's running code in an interactive Python interpreter session. In an interactive session, the value returned from the previous expression is stored in a variable named _. So if you're used to using _ as "a variable whose contents I don't care about" but you're in an interactive Python interpreter session, you might switch to using __ for that purpose instead.
So my best guess is that the sample code you've seen was intended to be run in an interactive Python session, where _ already has a special meaning. And so the person writing the code used __ for his throwaway variables, instead of _ which would be more commonly used.