The focus of my question is on design.
If I have an argument that can be None and it is passed between several functions until finally being used, which function should treat it as a default argument?
For example, suppose the following code block:
def foo(a):
b = # some code block to assign b
return bar(a, b)
def bar(a, b):
c = # some code block to assign c
return baz(a, b, c)
def baz(a, b, c):
return a + b + c
The default value should be set only in foo and all the other functions must expect the argument as mandatory (e.g., foo(a=None); bar(a, b); baz(a, b, c))? Or is there a better design?
And if type verification was needed, what is the most suitable function for this?