一般的函数参数是位置参数,位置不对会出问题

1.关键字参数

使用参数名提供的参数就是关键字参数,有了关键字参数,顺序就不会有影响。

>>>def printGrade(name,ID,grade):
  print("{0}(1)'s garde is{2}.".format(name,ID,grade))
>>>printGrade(name='jerry',garde='b',ID='1005')
 jerry(1005)'s grade is b

2.默认参数

在定义函数时可以给某些参数设定默认值

>>>def area(r,pi=3.14159):
  return pi*r*r
#带默认参数位置的参数可以不写
>>>area(3)
28.74309999999996
#默认参数值在调用时也可以修改
>>>area(4,3.14)
50.24
#调用时也可以利用关键字改变参数顺序
>>>area(pi=3.14,r=4)
50.24

3.可变长参数

python中允许一组数据给一个形参

>>>def greeting(arg1,*tupleArgs):
 print(args1)
 print(tupleArgs)
>>>greeting('hello','a','b','c')
 hello
('a','b','c')

tupleArgs前的*是可变位置参数的标记,用来收集其余的位置参数,将它们放到一个元组中

推荐使用下面方式进行调用

>>>def greeting(arg1,*tupleArgs):
 print(args1)
 print(tupleArgs)
>>>name=('a','b','c')
>>>greeting('hello',*name)
 hello
('a','b','c')

4.可变长的关键字参数

用两个星号表示可变长的关键字参数

>>>def assignment(**dict): 
   print(dict)
#调用方式1
>>>assignment(x=1,y=2,z=3)
{'x':1,'z':3,'y':2}

#调用方式2
>>>data('x':1,'y':2,'z':3)
assignment(**data)
{'x':1,'z':3,'y':2}