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

Python 参数使用总结

2018-02-03 22:38 239 查看
Python中参数的传递非常灵活,不太容易记住理解,特整理如下备忘:

普通参数

即按照函数所需的参数,对应位置传递对应的值,可以对应Java中的普通参数

defmax(a,b):
ifa>b:
returna
else:
returnb

max(5,13)#=13



默认参数

可以对位置参数中的某个参数设置默认值,设置了默认值的参数在调用时可以不传递

此时需要注意,默认参数只能在必选参数后面

defmax(a,b=0):
ifa>b:
returna
else:
returnb

max(5,13)#=13
max(5)#=5
max(-6)#=0



当有多个默认参数时,调用参数传递的值会按照顺序赋值,也可以通过指定参数值为特定参数赋值

defposition(x,y=1,z=0):
print('x:',x,'y:',y,'z:',z)

position(5)#x=5,y=1,z=0
position(5,6)#x=5,y=6,z=0
position(5,z=6)#x=5,y=1,z=6



可变参数

即传递的参数个数不确定,可以对应为Java中的可变参数,类似传递了一个list或tuple

可变参数只能出现在必选参数和默认参数后面

defmax(*numbers):
#此处可以有更简单的写法
sum=0
fornumberinnumbers:
sum+=number
returnsum

sum(1,2,3,4,5)#=15
#对于list或tuple,如nums=[1,2,3,4,5],可以这样使用
sum(*nums)#=15



命名关键字参数

命名关键字有些像普通参数和默认参数的结合,在一个*后面的参数为命名关键字参数

和普通参数、默认参数的区别就是需要在传递参数时指定赋值给的参数名字

命名关键字参数只能出现在必选参数、默认参数、可变参数后面

defperson1(name,*,age,sex):
print('name:',name,'age:',age,'sex:',sex)

defperson1=2(name,*,age=15,sex='F'):
print('name:',name,'age:',age,'sex:',sex)

person1('zhang',age=15,sex='F')#如果命名关键字参数没有设置默认值,则必须显示给每个参数赋值
person2('zhang')#函数中已经对参数设置默认值



如果命名关键字参数前面有可变参数,则可省略*号

#age和sex均是命名关键字参数
defperson(name,*args,age,sex):
pass



关键字参数

关键字参数必须出现在必选参数、默认参数、可变参数、命名关键字参数后面

在可变参数的基础上,即不仅仅可以传递任意个参数,同时还可以对传递的各个参数指定参数名,可以理解为传递了一个dict

defperson(name,**kw):
print('name:',name,'other:',kw)

person('zhang',age=15,sex='M')#name:zhangother:{'sex':'M','age':15}
#对于dict,如p={'age':15,'sex':'M'},可以这样使用
person('zhang',**p)



总结一下

普通参数——必选参数

可选参数——参数有默认值,调用函数时可以传递也可以不传递,如果不传递则使用默认值

可变参数——传递数量不确定(可以为0个)的参数,类似传递一个list

命名关键字参数——如果设置默认值,则同可选参数,否则必须传递,且传递时指定值对应的参数名

关键字参数——传递数量不确定(可以为0)的键值对,类似传递一个dict

在函数中出现的顺序必须和上面的保持一致

参考资料:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431752945034eb82ac80a3e64b9bb4929b16eeed1eb9000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: