Batuhan added the comment:
As mentioned in docs, getfullargspec is based on signature() and signature
objects doesnt keep record of all defaults. It tries to map defaults with
parameters but if you have less default then total parameter amount it will
discard rest of defaults. IMHO this
New submission from Dan Snider :
The interpreter matches the values in func.__defaults__ with the calculated
positional argument names "right-to-left", while inspect does does so
"left-to-right". In every day usage, for "normal" functions, generated by the
compiler from "normal", hand-typed