Great answers and all are correct.I have provided simple example along with simple definition/meaning.
Meaning:
some_variable --? it's public anyone can see this.
_some_variable --? it's public anyone can see this but it's a convention to indicate private...warning no enforcement is done by Python.
__some_varaible --? Python replaces the variable name with _classname__some_varaible (AKA name mangling) and it reduces/hides it's visibility and be more like private variable.
Just to be honest here According to Python documentation
"“Private” instance variables that cannot be accessed except from inside an object don’t exist in Python"
The example:
class A():
here="abc"
_here="_abc"
__here="__abc"
aObject=A()
print(aObject.here)
print(aObject._here)
# now if we try to print __here then it will fail because it's not public variable
#print(aObject.__here)