python可变参数详解
2017-11-21 17:06
393 查看
python的函数传递参数与java,c++有所区别,这也增强了python语言的灵活性。
1.位置参数
位置参数顾名思义,就是函数的参数按照定义位置传入,这与java,c++相同,传入的参数对应位置。比如:
2.默认参数
我们在java中,如果函数的参数传递少了,那么编译器就会报错,在python中,如果只指定位置参数,同样也会报错,但是如果我们设置了默认参数,在传递参数的时候不传递默认参数程序也是可以运行的;比如,一个函数要传递姓名,年龄,还有地区,如果给地区指定一个默认值,那么这个地区就可以不传入,这样在函数中就会给予默认参数默认的值,如果设置了就会覆盖默认值,这样就增加了极大的灵活性。
注意: 当python函数在定义的时候,默认参数就已经指定了,如果函数改变了默认参数的内容,那么在下一次调用默认参数时,默认参数就已经发生改变了,这与java的static有点相似。
3.可变参数
可变参数就是指传入的参数是可以改变的,可以是1个2个。。。,甚至不指定,想让参数变成可变参数很简单就在参数前面加一个号就可以了
4.关键字参数
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
同样的也可以直接传入字典
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
相关文章推荐
- python中的函数参数定义和可变参数详解
- Python函数可变参数定义及其参数传递方式详解
- python-关键字参数与非关键字参数(可变参数)详解
- 一文详解Python中的*可变参数与**关键字参数
- 详解Python函数可变参数定义及其参数传递方式
- Python关键字参数与非关键字参数(可变参数)详解
- Python函数可变参数定义及其参数传递方式实例详解
- Python函数可变参数*args及**kwargs详解
- Python函数可变参数定义及其参数传递方式实例详解
- C系列总结3 & 剖析函数调用及可变参数--详解栈帧
- 详解可变参数列表
- Python自定义函数的创建、调用和函数的参数详解
- C语言可变参数函数详解示例
- 自学python(4)函数概述,参数,可变参数,关键字参数,组合参数,递归函数
- Python-可变参数和关键字参数(*args **kw)
- Xiaoxia[PG] Python可变参数与标准输出的重定位
- python中函数的可变参数设置
- Python笔记2——默认参数,可变参数,关键字参数,参数组合
- Python中的可变参数*args和**kwargs
- Java数组可变长参数详解