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

python可变参数详解

2017-11-21 17:06 393 查看
python的函数传递参数与java,c++有所区别,这也增强了python语言的灵活性。

1.位置参数

位置参数顾名思义,就是函数的参数按照定义位置传入,这与java,c++相同,传入的参数对应位置。比如:

def text(a,b,c):
print(a,b,c)
text(1,"k","hello")
输出结果1 k hello


2.默认参数

我们在java中,如果函数的参数传递少了,那么编译器就会报错,在python中,如果只指定位置参数,同样也会报错,但是如果我们设置了默认参数,在传递参数的时候不传递默认参数程序也是可以运行的;比如,一个函数要传递姓名,年龄,还有地区,如果给地区指定一个默认值,那么这个地区就可以不传入,这样在函数中就会给予默认参数默认的值,如果设置了就会覆盖默认值,这样就增加了极大的灵活性。

def enroll(name, gender, age=6, city='Beijing'):
print('name:', name)
print('gender:', gender)
print('age:', age)
print('city:', city)
enroll("kangkang",2)
enroll("xiaoming",6,12,'重庆')
enroll('Adam', 'M', city='Tianjin')#当不按顺序传递默认值,就要指定默认参数的值


注意: 当python函数在定义的时候,默认参数就已经指定了,如果函数改变了默认参数的内容,那么在下一次调用默认参数时,默认参数就已经发生改变了,这与java的static有点相似。

3.可变参数

可变参数就是指传入的参数是可以改变的,可以是1个2个。。。,甚至不指定,想让参数变成可变参数很简单就在参数前面加一个号就可以了
def tem(*number)
,你可以传入多个参数,函数会自动组装成一个tuple类型的number,比如你传入的是tem
(1,2,{1,2,3},(1,2,3))
那么你输出number的结果就是
(1,2,{1,2,3},(1,2,3))
,如果你想传入一个list或者tuple,你只需要在list或者tuple前面加上一个号就可以了。

def p(*a):
print(a)

a=[1,2,3]
p(*a)
p(1,2,{1,2},{"hello":1})
#结果:
#(1, 2, 3)
#(1, 2, {1, 2}, {'hello': 1})


4.关键字参数

可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
person('mick',10,city='chongqing',money=100)
#name: mick age: 10 other: {'city': 'chongqing', 'money': 100}


同样的也可以直接传入字典

d={city='shanghai',money=100}
person('mick',10,**d)
#输出结果与上面类似


python的函数参数给我们设计程序带来了极大的灵活性,如
a(*args,**kwargs)
这个函数就表示可以传递任何信息到函数中,熟练掌握函数参数可以提高程序的健壮性和简便性。

参考文章廖雪峰

end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: