def g(a, /, b, c=30, *d, e=50, **f): print(a,b,c,d,e,f) # g() # an error, no a or b # g(1) # an error, no b g(1,2) g(1,2,3) g(1,2,3,4) g(1,2,3,4,5) g(1,2,3,4,5,6) # g(a=1) # an error, a can't be keyword and no b # g(a=1,b=2) # an error, a can't be keyword g(1,b=2) g(1,b=2,c=3) g(1,c=3,b=2) g(1,2,c=3) g(1,2,d=4) # g(1,2,b=3) an error, b specified twice g(1,2,3,4,d=5) g(1,2,3,4,5,6,d=7,e=8,f=9)