# case 1 simply, normal way
def a(x):
print("function a",x)
a(1)
# case 2 set default value at function argument
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) # 2 assign to x 1 assign to y and missing value for x
# case 4 better arrange all assignment at the end
def a(x,y,z=1):
print("function a case 4 :",x,y,z)
a(2,3,4)
a(2,3)
# 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) # provide keyword at function call level, keyword order doesn't matter
# a(2,x=3) # 2 is still assign to x, get multiple values for argument 'x'
# once use keyword argument, the rest must be keyword argument
# a(z=4,2,3) # error
a(z=4,y=3,x=1) # all value with keyword argument
# 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)
print(type(arg))
a(1,2,3,4,5,6,7,8)
# case 8 missing 1 required keyword-only argument: 'z'
# def a(x,y,*arg,z):
# print("function a case 9 :",x,y,arg,z)
# print(arg[0]+arg[1])
# a(1,2,3,4,5,6,7,8)
# case 9
def a(x,y,*arg,z=1):
print("function a case 9 :",x,y,arg,z)
print(arg[0]+arg[1])
a(1,2,3,4,5,6,7,8)
# case 10
def a(x,y,z=1,*arg):
print("function a case 10 :",x,y,arg,z)
a(1,2,3,4,5,6,7,8)
a(1,2)
# case 11
def a(x,y,*arg,z):
print("function a case 11 :",x,y,arg,z)
a(1,2,3,4,5,6,7,8,z=10)
# case 12 missing 1 required keyword-only argument: 'z'
# def a(x,y,*arg,z):
# print("function a case 12 :",x,y,arg,z)
# a(1,2)
# case 13 * without arg variable a() takes 0 positional arguments byt 8 were given
def a(*,z):
print("function a case 13 :",z)
# a(1,2,3,4,5,6,7,8)
a(z=1)
# case 14 **kwarg
def a(*,z,**kwarg):
print("function a case 14 :",z,kwarg)
a(z=1,y=2,x=3)
# case 15 **kwarg
def a(v,w,z,**kwarg):
print("function a case 15 :",v,w,z,kwarg)
a(2,4,z=1,y=2,x=3)
# case 16 *arg **kwarg
def a(*arg, **kwarg):
print("function a case 16 :",arg,kwarg)
a(2,4,z=1,y=2,x=3)
def a(*, z):
print(z)
a(z=4)
def a(v,w,*,y,z,**kwarg): # after *, argument must be getting keyword assignment from caller
print("function a case 14 :",v,w,y,z,kwarg)
a(4,5,z=1,y=2,x=3)
# help(print)
# def a(arg,**kwarg):
# print("function a case 16 :", arg, kwarg, sep = '$')
# a(2,4,z=1,y=2,'x'=3)