def a(x):
print("function a",x)
a(1)
#case 2
def a(x=1):
print("function a",x)
a(2)
a()
#case 3 non-default argument follows default argument
#def a(x=1, y, z):
# print("function a",x)
#a(2,1)
#case 4
def a(x, y, z=1):
print("function a", x, y, z)
a(2, 3, 4)
a(2,3)
a(10, 30,z=20)
#case 5 function call with keyword arguments
def a(x, y, z=1):
print("function a", x,y,z)
a(2,z=4,y=3) #keyword order doesn't matter
a(y=3,x=2)
a(2,y="",z=10)
a(2,y=None,z=10)
#a(2,x=3) # got multiple values for argument 'x'
a(2,3)
#case 6
def a(x, y, z=1):
print("function a", x,y,z)
a(y=2,x=1)
#-*arg-----------------
#case 7
def a (x, y, *arg):
print("function a case 7 : ", x, y, arg)
a(1,2,3,4,5,6,7,8)
#case 8 missing 1 required keyword-only argument: 'd'
#def a (x, y, *arg, d):
# print("function a case 8 : ", x, y, arg, d)
#a(1,2,3,4,5,6,7,8)
#case 9
def a (x, y, *arg, d):
print("function a case 9 : ", x, y, arg, d)
a(1,2,3,4,5,6,7,8,d=9)
#case 10
def a (x, y, *arg, d=1):
print("function a case 10 : ", x, y, arg, d)
print(arg[0]+arg[1])
a(1,2,3,4,5,6,7,8)
#case 11
def a (x, y, d=1, *arg):
print("function a case 11 : ", x, y, arg, d)
#print(arg[0]+arg[1])
a(1,2,3,4,5,6,7,8) # result: d= 3, arg=(4,5,6,7,8)
a(1,2)
#case 12
def a (x, y=1, d=2, *arg):
print("function a case 11 : ", x, y, arg, d)
#print(arg[0]+arg[1])
a(1,2,3,4,5,6,7,8) # result: d= 3 (element 3), arg=(4,5,6,7,8)
a(1,2)
#case 13 missing 1 required keyword-only argument: 'd'
#def a (x, y, *arg, d):
# print("function a case 13 : ", x, y, arg, d)
# #print(arg[0]+arg[1])
#a(1,2)
#case 14 * without arg variable a() takes 0 positional arguments but 8 were given
def a(*,d=100):
print("function a case 14 : ", d)
#a(1,2,3,4,5,6,7,8)
a(d=2)
#case 15 **kwarg
def a(*, z,**kwarg):
print("function a case 15 : ", z, kwarg)
a(z=1, y=2, x=3)
#case 16 **kwarg
def a(v, w, z,**kwarg):
print("function a case 16 : ", v, w, z, kwarg)
a(2,4,z=1, y=2, x=3)
#case 17
def a(*arg, **kwarg):
print("function a case 17 : ", arg, kwarg)
a(1,2,3,4, z=5, x=6, y=7)