day15-关于函数参数的思考

# def test(x,y,z):#x=1,y=2,z=3
#     print(x)
#     print(y)
#     print(z)
#位置参数,必须一一对应,缺一不行多一也不行
# test(1,2,3)
#关键字参数,无须一一对应,缺一不行多一也不行
# test(y=1,x=3,z=4)
#位置参数必须在关键字参数左边
 
 
# test(1,y=2,3)#报错
# test(1,3,y=2)#报错
# test(1,3,z=2)
# test(1,3,z=2,y=4)#报错
# test(z=2,1,3)#报错
 
 
 
# def handle(x,type='mysql'):
#     print(x)
#     print(type)
# handle('hello')
# handle('hello',type='sqlite')
# handle('hello','sqlite')
# def install(func1=False,func2=True,func3=True):
#     pass
#参数组:**字典 *列表

def test(x,*args):
    print(x)
    print(args)

# test(1)
# test(1,2,3,4,5)
# test(1,{'name':'alex'})
# test(1,['x','y','z'])
# test(1,*['x','y','z'])
# test(1,*('x','y','z'))
把第一个位置参数对应完毕后,剩下的所有值都以列表的形式传递给第二个参数。这个时候如果想传递一个列表给第二个参数就应该*[1,2,3,4],其实可以理解为前面加一个型号就是遍历列表的所有值,然后交给第二个参数。如果只写[1,2,3,4]那么会把整个列表作为一个值传递给第二个参数(这个参数是一个列表,接受的列表是其第一个值)
这样理解的话,字典作为参数时也一样,需要在字典前面加**,这样就是遍历字典的所以键值对,然后把这些键值对传递给参数(这个参数是字典),
 
 
# def test(x,**kwargs):
#     print(x)
#     print(kwargs)
# test(1,y=2,z=3)
# test(1,1,2,2,2,2,2,y=2,z=3)
# test(1,y=2,z=3,z=3)#会报错 :一个参数不能传两个值
def test(x,*args,**kwargs):
    print(x)
    print(args,args[-1])
    print(kwargs,kwargs.get('y'))
# test(1,1,2,1,1,11,1,x=1,y=2,z=3) #报错
# test(1,1,2,1,1,11,1,y=2,z=3)
# test(1,*[1,2,3],**{'y':1})

猜你喜欢

转载自www.cnblogs.com/lixing379/p/9703296.html