python函数参数包括五种类型:位置参数、默认参数、可变参数、关键字参数以及命名关键字参数。
位置参数例如 def ex(y): y就是位置参数 例子:
def ex(y):
print(y)
ex(2)
默认参数可以简化函数的调用,设置默认参数时,要注意:
一 必选参数在前,默认参数在后
二当函数有多个参数时,把变化大的参数放在前面,变化小的参数放后面
举个例子:
def information(name,gender,age=18,city='beijing'):
print(name,gender,age,city)
information('xiaoming','9',city='hebei')
结果如下:
information()中age和city是默认参数,当全部输入时,默认参数可以不用写参数名输入,如果不是按照默认顺序参数输入,就要输入相应的参数名,当不对默认参数做处理时,输出就会输出默认参数,如果输入给定值,就会输出给定值。
定义默认参数时,默认参数必须指向不变对象
可变参数:可变参数就是指传入的参数个数是可变的,即可以是1个,2个到任意个,也可以是0个。
可变参数主要运用于在不知道参数个数的情况下使用。
例如计算一组数字的平方和a^2+b^2+c^2+.....
函数可以这样定义:
def sq(*number):
sum=0
for x in number:
sum=sum+x*x
return sum
a=sq(1,2,3)
print(a)
可变参数是用*args定义的,如sq(*number)
可变参数传值还有一个方法,即
b=[1,2,3]
sq(*b)
*b表示把b这个列表里面的所有参数作为可变参数传进去。
可变参数允许传入0个或者任意个参数,这些可变参数在函数调用时自动组装为一个元组。
关键字参数:关键字参数允许传入0个或者任意个包含参数名的参数,这些关键字在函数内部自动组装成为一个字典。示例如下
def student(name,grade,**kw):
print(name,grade,kw)
这表示student这个函数参数接收关键字参数kw,关键字参数表示时使用**kw来表示
def student(name,grade,**kw):
print(name,grade,kw)
>>> student('xiaoming','5',age="9",address="北京")
xiaoming 5 {'address': '北京', 'age': '9'}
age="9",address="北京"就是关键字参数,它是用字典显示出来的,使用关键字参数可以使函数有良好的扩展功能,
命名关键字参数:命名关键字可以限制关键字参数的名字,这样可以保证一定的安全性。
命名关键字参数有两种方法:一是在参数前面加一个*,用逗号隔开:如下
def per(name,age,*,city,job):
print(name,age,city,job)
*后面的city和job即是命名关键字参数,调用方式如下:
per("xiaohong",12,city="北京",job="学生")
xiaohong 12 北京 学生
第二种方法是如果函数参数中已经有了可变参数,那么可变参数后面的参数即为命名关键字参数:
def per(name,age,*args,city,job):
print(name,age,args,city,job)
即*args后面的city,job为关键字参数
要注意的是:命名关键字一定传入参数名,否则会出错,命名关键字也可以有默认值。
参数组合:在python中可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数组合使用,参数定义顺序为:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。示例如下:
def ex(a,b,c=1,*args,**kw):
print(a,b,c,args,kw)
a和b为必选参数,c为默认参数,args为可变参数,**kw为关键字参数
还有一种为
def ex(a,b,c=1,*args,d,**kw):
print(a,b,c,args,kw)
a和b为必选参数,c为默认参数,args为可变参数,d为命名关键字参数,**kw为关键字参数。