It's not a caprice, there's a reason behind this. When you import something, you copy it in the module/store where it's imported. So when you write :
Code:
from renpy.persistent import _MutliPersistent
You create a store._MultiPersistent function, which not happen when you use it where it is.
In most of the case it's not a problem because it's a reference-like copy, plus here it's a function, so something intended to be static. But when it's object that you import it increase the number of reference and make the object not disappear when it should, because there's still your copy somewhere.
But the worse case is when it simply and silently overwrite what's already defined (in the console) :
Code:
id( Show )
id( renpy.ast.Show )
They are two different objects sharing the same name (there's a lot like this in the core). Like they are defined in two different namespace, it's not a problem. But if you start to import renpy.ast.Show (the ren'py language keyword) in the main namespace, it will overwrite store.Show (the screen action). You'll not know it until you need to use the said screen action, and I'm sure that it will take you a lot of time before you'll figure where's the error ; I'm sure of this because it happen even to way more experienced coder than me.
So, you SHOULD NOT import unless :
You are in your own namespace
OR
Can't access the attribute in another way
OR
Know exactly why you do it
OR
Are sure that there isn't and will never exist an attribute with this name in the actual namespace.