Python3——函数(一) 参数

Python3中函数参数匹配模式有按照位置、关键字参数、默认参数、可变参数、可变参数解包以及Keyword-only参数。

如下所示函数参数匹配表:

def func(name) #按位置匹配

def func(name=value) #默认参数

def func(*name)#获取任意多参数,并放在元组中

def func(**name)#获取任意多参数,并放在字典中

def func(*args,name)#关键字参数,只能用关键字赋值

按位置匹配

1
2
3
4
5
def func(a,b,c):
	print(a,b,c)
 
func('111','222','333')
#输出结果:111 222 333

按位置匹配方式,函数的参数按照顺序一一对应。

默认参数

1
2
3
4
5
def func(a='111',b='222',c='333'):
	print(a,b,c)
 
func('默认参数')
#输出结果:默认参数 222 333

设置了默认参数的函数,如果在运行过程中没有赋值,那么就按照默认参数设置的值运算。

关键字赋值

1
2
3
4
5
def func(a='111',b='222',c='333'):
	print(a,b,c)
 
func(c='关键字')
#输出结果:111 222 关键字

执行函数时,给申明函数时对应的参数设定值,可以跳过位置顺序,直接给指定的参数赋值。

任意数量参数

1
2
3
4
5
6
7
8
9
10
11
def func(*a):
	print(a)
 
func('默认参数',111,222)
#输出结果:('默认参数', 111, 222)
 
def func2(**a):
	print(a)
 
func2(first='1',second='2')
#输出结果:{'first': '1', 'second': '2'}

一个星号的参数,会把所有收集到的参数放入一个元组中。
两个星号的参数需要收集关键字参数,放入字典中。关键字成为字典的键,参数的值就是字典中对应键的值。

参数顺序

函数的参数可以同时拥有不同类型,但必须按照一定的顺序排列。
位置参数>*任意参数>**任意参数
python3有一种keyword-only参数,它出现在*之后,**之前。这种参数只能通过关键字来赋值。

1
2
3
4
5
def func(a = 1,*b,c = 3):
	print(a,b,c)
 
func(1,2,3,4,5,c = 'c')
#输出结果:1 (2, 3, 4, 5) c

参数解包

在函数申明中,*/**表示收集任意参数并放入元组/字典中。而在调用函数时,*/**的用法相反,是将序列或字典解包为独立的参数。

1
2
3
4
5
6
7
8
9
10
def func(a,b,c):
	print(a,b,c)
 
test = [1,2,3]
func(*test)
#输出结果:1 2 3
 
test = {'a':1,'b':2,'c':3}
func(**test)
#输出结果:1 2 3

值得注意的是,**会将字典中的键提出来,作为关键字参数的关键字,对应的值为参数赋值。

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注