python学习手册:第十八章——参数

函数返回值

函数返回值可以通过(,)进行收集,即函数可以通过返回一个元组来达到返回多个值的目的

函数的匹配语法

  • 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函数赋值时参数匹配的顺序

  1. 通过位置匹配飞关键字参数
  2. 通过匹配变量名分配关键字参数
  3. 其他额外的非关键字参数分配到*name中
  4. 其他的关键字参数分配到**name中
  5. 用默认值分配给在头部未得到分配的参数

关键字参数和默认参数的实例

关键字参数

需要注意的是无关键字参数的调用必须在有关键字参数调用的前面

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
原文地址:https://www.cnblogs.com/yingyingdeyueer/p/11852942.html