函数返回值
函数返回值可以通过(,)进行收集,即函数可以通过返回一个元组来达到返回多个值的目的
函数的匹配语法
- func(value) 常用的调用方法
- func(name=value) 关键字参数,通过变量名进行匹配
- func(*sequence) 以name传递所有的对象,并作为独立的基于位置的参数
- func(**sequence) 以name或成对的传递所有的关键字/值,并作为独立的关键字参数
- def func(name) 常规参数:通过位置或者变量名进行匹配
- def func(name=value) 如果没有在调用中传递则取默认值
- def func(*name) 匹配并收集(在元组中)所有包含位置的参数
- def func(**name) 匹配并收集(在字典中)所有包含位置的参数
- def func(*args,name) 参数必须在调用中按照关键字传递
参数及调用函数的顺序
- 在函数调用中,参数必须的顺序:任何位置参数,后面跟着任何关键字参数(name = value)和*sequence形式的组合,后面跟着**dict形式
- 在函数头部,参数必须以此顺序出现,任何一般参数,紧跟着任何默认参数(name=vcalue),后面是*name的形式,后面跟着任何name或name=value keyword-only参数,后面跟着**name形式
python函数赋值时参数匹配的顺序
- 通过位置匹配飞关键字参数
- 通过匹配变量名分配关键字参数
- 其他额外的非关键字参数分配到*name中
- 其他的关键字参数分配到**name中
- 用默认值分配给在头部未得到分配的参数
关键字参数和默认参数的实例
关键字参数
需要注意的是无关键字参数的调用必须在有关键字参数调用的前面
def f (a,b,c):
print(a,b,c)
f(1,2,3)
f(c=3,b=2,a=1)
f(1,c=3,b=2)
#1 2 3
#1 2 3
#1 2 3
默认参数
def f (a=1,b=2,c=3):
print(a,b,c)
f(3,5)
f(3,c=5)
#3 5 3
#3 2 5
任意参数
- func(*args) 此参数收集所有未匹配到的和位置有关的参数到一个新的数组中
- func(**args)此参数收集所有未匹配到的关键字参数到一个新的字典中
def f (a,b=2,*args): #收集位置参数
print("a=",a,"b=",b,"args=",args)
f(1,3,3456,4,5)
def f (a,b=2,**args): #收集关键字参数
print("a=",a,"b=",b,"args=",args)
f(1,b=3,c=4,d=5)
def f (a,b=2,*arg,**args): #混用
print("a=",a,"b=",b,"arg=",arg,"args=",args)
# a= 1 b= 3 args= (3456, 4, 5)
# a= 1 b= 3 args= {'c': 4, 'd': 5}
# a= 1 b= 2 arg= (3,) args= {'c': 4, 'd': 5}
解包参数
把一个序列拆分开来分别赋值给函数的参数
def func(a,b,c,d):
print(a,b,c,d)
l = [1,23,4,5]
t = (1,2,3,4)
s = {1,2,3,4}
d = {'a':1,'b':2,'c':3,'d':4}
func(*l)
func(*t)
func(*s)
func(**d)
#1 23 4 5
# 1 2 3 4
# 1 2 3 4
# 1 2 3 4