Python never checks for human misbehavior. The language philosophy is to assume that programmers are grown up adults and know what they are doing.
Since :
- Python is an autodocumented language, so you'll know in a blink what returns a function;
- Python uses duck typing, so getting None by default can ease dynamic function call a lot.
Returning None make more senss than raising an error.
E.G :
function_stack = [func1, func2, func3]
for f in function_stack :
a = f()
if a is not None :
# do something
No matter if f is f() is a function or a procedure. There is no such thing in Python. You can apply all the function, and process output if there is any.