Python is Best

Python——函数参数

2017-09-26  本文已影响1人  So_ProbuING

Python函数参数

传递参数

特定的参数匹配

def f(a,b,c):print(a,b,c)

通过参数名进行匹配

f(a=1,b=2,c=3)
f(1,c=3,b=2)

参数默认值

def f(a,b=2,c=3):print(a,b,c)
>>> def f(a,b=1,c=2):
...     print(a,b,c)
... 
>>> f(1)
1 1 2
>>> f(1,2)
1 2 2
>>> f(1,2,5)
1 2 5

可变参数:收集任意多基于位置或关键字的参数

函数能够使用特定的参数,这些参数以字符*开头

可变参数解包:传递任意多的基于位置或关键字的参数

调用者能够再使用*语法去将参数集合打散,分成参数。*在函数头部表示函数接收任意多的参数,而在调用者中意味着传递任意多的参数

def f(*args):print(args)

当这个函数调用,Python将所有位置相关的参数收集到一个新的元组中,并将这个元组赋值给变量args。

>>> def ff(*args):
...     print(args)
>>> ff()
()
>>> ff(1,2,3,4)
(1, 2, 3, 4)
>>> def fff(**args):print(args)
>>> fff(a=1,b=2)
{'a': 1, 'b': 2}
# 混合调用
>>> def ffff(a,*b,**c):print(a,b,c)
>>> ffff(1,2,3,4,x=2,y=3)
1 (2, 3, 4) {'x': 2, 'y': 3}

Keyword-only:参数必须按照名称传递

在Python3.0中,函数可以指定参数,参数必须用带有关键参数的名字来传递。这样的参数通常用来定义实际参数

特定参数匹配模式语法

解包参数

最新的Python版本中,我们在调用函数时可以使用*语法,这种情况下,它与函数定义的意思相反。它会解包参数集合。不是创建参数集合

>>> def func(a,b,c,d):
...     print(a,b,c,d)
... 
>>> args = (1,2)
>>> args+=(3,4)
>>> func(*args)
1 2 3 4

"**"会以键值对的形式解包一个字典,解包后会成为独立的关键字参数

>>> def func(a,b,c,d):
...     print(a,b,c,d)
>>> args={'a':1,'b':2,'c':'sdasd','d':3333}
>>> args['d']=2222
>>> func(**args)
1 2 sdasd 2222

细节

使用并混合特定的参数匹配模型,Python将会遵循如下法则:

上一篇 下一篇

猜你喜欢

热点阅读