python 函数参数 必选参数 默认参数 可变参数 关键字参数

python函数参数如下

1:必选参数

2:默认参数

3:可变参数 *args

4:关键字参数 **kwargs

默认参数必须在必选参数后面 为什么??

例子如下

def xx(a,b=3,c):
    print(a,b,c)
xx(1,2)
  # 出错这里你想的是把a赋值为1 c赋值为2 实际上是a=1,b重新赋值为2

SyntaxError: non-default argument follows default argument

def xx(b=3,a):
    print(a,b)
xx(2)
#这里你想的是给a赋值为2,但是b在前面所以b重新赋值为2

SyntaxError: non-default argument follows default argument

为了解决这个迷惑问题python规定默认参数必须在必选参数后面


可变参数*args 有两个功能打包和分包功能

举例打包:

def xx(a,*b,c=3):
    print(a)
    print(b)
    print(type(b))
    print(c)
xx(4,5,6,7)    #将5,6,7打包成元组传给参数b,b为元组

结果为:

4
(5, 6, 7)
<class 'tuple'>
3

举例分包

x=[5,6,7,8]
def xx(a,b,c,d,e):
    print(a,b,c,d,e)
xx(4,*x) #这里*x 把x中每个元素分给b,c,d, e

结果为4,5,6,7,8


关键字参数

key值必须为字符串

关键字参数打包

def xx(a,b=3,**c):
    print(a,b,c)
xx(4,nb='33',sb='44')

运行结果

4 3 {'nb': '33', 'sb': '44'}

关键字参数分包

y={'b':44,'c':[1,2,3,4],'d':88}
def xx(a,b,c,d=3):
    print(a,b,c,d)
xx(4,**y)

运行结果

4 44 [1, 2, 3, 4] 88

大家可以根据我这代码自我进行实验,摸清python语法规则 本文章发表个人观点,不对的地方欢迎指出。

喜欢的点波关注,点赞一下  么么哒么么