#persinfo('bob' #persinfo(age= name='bob'#birthday( = = test methodspositional and keyword class persondef __init__(selfnamejobpay)self job job self pay pay giveraise rangetest)(giveraise@rangetest(percent=( )percent passed by name or position def giveraise(selfpercent)self pay int(self pay ( percent)bob person('bob smith''dev' sue person('sue jones''dev' bob giveraise sue giveraise(percent print(bob paysue pay#bob giveraise( #bob giveraise(percent= test omitted defaultsskipped @rangetest( =( ) =( ) =( ) =( )def omitargs(ab= = = )print(abcdomitargs( omitargs( omitargs( = omitargs( = omitargs( = = omitargs( = = omitargs( = = = #omitargs( #omitargs( #omitargs( = #omitargs( = #omitargs( = = #omitargs( = = #omitargs( = = = bad bad bad bad bad bad bad when this script is runout-of-range arguments raise an exception as beforebut arguments may be passed by either name or positionand omitted defaults are not validated this code runs on both and trace its output and test this further on your own to experimentit works as beforebut its scope has been broadenedc:\codepython rangetest_test py bob is years old bob is years old birthday examplevalidating function arguments