python的5种方法参数
1.位置参数
这里跟java中的参数没有什么区别
def locationParam(x):
print("位置参数x的值:",x)
调用:locationParam(1)
结果为:位置参数x的值: 1
2.默认参数
默认参数在调用时若没有为其传参时会有使用默认值作为参数,减少了参数调用的难度
def defaultParam(x,y=8):
print("位置参数x的值:",x,"默认参数y的值:",y)
调用:defaultParam(1,9)
结果为:位置参数x的值:1 默认参数y的值: 9
调用:defaultParam(1)
结果为:位置参数x的值:1 默认参数y的值: 8
这种参数在使用过程中需要注意的是,如果默认参数定义的值是一个可变对象,那么无论调用多少次方法,都是以该对象做参数(也就是把该对象的引用的值传入),因为默认参数的值在方法声明时就已经决定
3.可变参数
类比java中的可变参数,用法没有非常大的区别
def changeableParam(x,y=8,*z):
print("位置参数x的值:",x,"默认参数y的值:",y","可变参数的值:",z)
调用:
changeableParam(1,2,3,4,5,6)
结果为:位置参数x的值:1 默认参数y的值: 2 可变参数的值:[3,4,5,6]
调用:
param = [3,4,5,6]
changeableParam(1,2,*param)
结果为:位置参数x的值:1 默认参数y的值: 2 可变参数的值:[3,4,5,6]
4.关键字参数
使用关键字参数的方法允许调用者传入键值对作为参数,在方法内部将自动封装成一个dict
下面是两种调用方式,其中第二种传入的是一个dict的拷贝,并不是引用
def keywordParam(x,y=8,*z,**kw):
print("位置参数x的值:",x,"默认参数y的值:",y","可变参数的值:",z,"关键字参数:",kw)
调用:
param = [3,4,5]
keywordParam(1,2,*z,name='小明',age=18)
输出:位置参数x的值:1 默认参数y的值: 2 可变参数的值为:[3,4,5,6] 关键字参数的值:{‘name’:’小明’,age:18}
调用:
param1 = [3,4,5]
param2 = {'name':'小明','age':18}
keywordParam(1,2,*param1,**param2)
输出:位置参数x的值:1 默认参数y的值: 2 可变参数的值为:[3,4,5,6] 关键字参数的值:{‘name’:’小明’,age:18}
5.命名关键字参数
关键字参数的特殊形式,可以限制传入的键值对的key,以一个*分格,之后的参数被视为命名关键字参数
(在方法中如果有可变参数时,*可以省略,原因请看下面优先级)
def limitkeyword(x,y=0,*z,*,name,age):
print("位置参数x的值:",x,"默认参数y的值:",y","可变参数的值:",z,“命名关键字参数name:",name,“命名关键字参数age:",age)
调用:limitkeyword(1,2,3,4,name='小明',age=18)
输出:位置参数x的值:1 默认参数y的值: 2 可变参数的值为:[3,4] 命名关键字参数name:’小明’ 命名关键字参数age:18
6.5种参数的优先级
以上5种参数的放置优先级从高到低的顺序为:位置参数,默认参数,可变参数,命名关键字参数,关键字参数,他们都可以根据实际情况组合使用