Anyway, can you explain why LBYL is bad?
In the general case, it's bad because of a combination of issues. It
may violate once, and only once! -- the operations one needs to check
may basicaly duplicate the operations one then wants to perform. Apart
from wasted effort, it may happen
Where are the attempts to speed up function/method calls? That's an
area where we could *really* use a breakthrough...
At one time you had entertained treating some of the builtin calls as
fixed. Is that something you want to go forward with? It would entail
a from __future__ and transition