>Yes there is lookup, always lookup. Dynamic language, something in loop could change what lstr is.
And why is that presented as something inevitable?
The interpreter/compiler could analyze that part and see that the function/name is not changed during the loop, and cache for that.
I'd guess that PyPy tries to do it that way, anyway...