This can work both ways, though, as even if something is syntactically a float
, int
, etc (like using 0
, -1
, or even math.e
for a flag value, as some has proposed), semantically the meaning and behavior is a special case, different from that with any other int
/float
. Using None
(or a dedicated sentinel type) ensures the syntax clearly communicates that this is a semantic special case, and can allows type checkers and other tools to statically verify it is being handled inside the function (or wrappers) and better introspect usage outside of it.
1 Like