Here's another whacky idea: how about adding a so-called FuncSeq to the collections library for composing functions?
Since FuncSeq is (obviously) a sequence, that might help with the intuition of the function application order. The idea is the function application order is the same as the iteration order of the sequence:
from collections import FuncSeq
fun_seq = FuncSeq([str, len])
fun_seq(789) # 3
fun_seq[::-1]("789") # '3'
---
Ricky.
"I've never met a Kentucky man who wasn't either thinking about going home or actually going home." - Happy Chandler