if not instance:
return # will pass be better or worse here?
Worse. It changes the logic. pass actually means: Do nothing. If you would replace return with pass here, the control flow would continue, changing the semantic of the code.
The purpose for pass is to create empty blocks, which is not possible otherwise with Python’s indentation scheme. For example, an empty function in C looks like this:
void foo()
{
}
In Python, this would be a syntax error:
def foo():
This is where pass comes handy:
def foo():
pass