Although Python is claimed to be “properly” tail-recursive, some might dispute this, since there are situations where tail recursion is inhibited:
tagbodyand the block name or
gotag has been closed over.
These dynamic extent binding forms inhibit tail recursion because they allocate stack space to represent the binding. Shallow-binding implementations of dynamic scoping also require cleanup code to be evaluated when the scope is exited.
In addition, optimization of tail-recursive calls is inhibited when
debug optimization quality is greater than