您的位置:首页 > 编程语言 > Python开发

python的位置参数、默认参数、关键字参数、可变参数区别

2017-11-07 13:35 585 查看


一、位置参数

调用函数时根据函数定义的参数位置来传递参数。

# def test(x,y):
# print (x)
# print (y)
# return x*y;
# tal=test(3,2);
# print(tal)# 两个参数的顺序必须一一对应,且少一个参数都不可以


二、关键字参数

用于函数调用,通过“键-值”形式加以指定。可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求。

def student(name,age):
print (name,age)
return name,age
stt=student(name='张三',age=23)
print(stt)



三、默认参数

用于定义函数,为参数提供默认值,调用函数时可传可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)
def student(name,age,sex='man'):
print (name,age)
return name,age,sex
stt=student(name='张三',age=23)
print(stt)


四、可变参数

定义函数时,有时候我们不确定调用的时候会传递多少个参数(不传参也可以)。此时,可用包裹(packing)位置参数,或者包裹关键字参数,来进行参数传递,会显得非常方便。


1、包裹位置传递

def test(*args):
return args;
print(test(1,2,3))
我们传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组(tuple),args是元组类型,这就是包裹位置传递。


2、包裹关键字传递

def test(**args):
return args;
print(test(x=2,y=3,z=5))#{'x': 2, 'y': 3, 'z': 5}


五、位置参数、默认参数、可变参数的混合使用

基本原则是:先位置参数,默认参数,包裹位置,包裹关键字(定义和调用都应遵循)

def test4(name,age,address,sex='男',*grgs0,**grgs1):
print(name)
print(age)
print(address)
print(sex)
print(grgs0)
print(grgs1)
test4('刘备',age=20,address='成都',salary='3000',birthday='2018-02-20')

*args
 表示任何多个无名参数,它是一个tuple;
**kwargs
 表示关键字参数,它是一个dict。并且同时使用
*args
**kwargs
时,必须
*args
参数列要在
**kwargs
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐