python 函数的参数

1. 形参、实参

形参,徒有其形,没有固定值,只是个形式而已。

实参,有实实在在的值,传递给函数

def test(x,y,z = 3):   # x,y,z 形参
    print(x,y,z)
test(1,2)             # 1,2 实参

2. 位置参数和默认参数

位置参数是严格按照一一对应的关系,将你的实参和位置参数对应赋值。位置参数就是占位符。默认参数则自带一个默认值,如果用户不传递这个参数,就使用默认值。

def test(x,y,z = 3):   # x,y,z 形参; 其中x,y是位置参数,z是默认参数
    print(x,y,z)
test(1,2)             # 1,2 实参,1对应赋值给x,2对应赋值给y;没有给默认参数z赋值,使用z的默认值
test(1,2,4)           # 给默认参数也重新赋值:4

3. 关键字参数

关键字参数,就是手动的将 形参 和 实参 对应起来,然后将 值 传递给函数

def test(x,y,z = 3):   # x,y,z 形参;
    print(x,y,z)
test(y=2 ,x=1, z=5)   # 关键字参数,直接赋值,可以打乱x/y/z 的赋值顺序
test(1,2,z=5)          # 注意,当位置参数和关键字参数同时存在时,关键字参数一定要放在位置参数之后!

4.可变参数

可变参数可以允许传入多个参数,没有固定数量,以 *<参数名> 来表示

# 可变参数
def test2(x,y,z=3,*args):    # *args 会把多传入的参数变成一个元组
    print(x,y,z,args)
test2(1,2,3,4,5,6)      # 1,2,3 分别赋值给 x,y,z; (4,5,6) 赋值给了 *args

另一种可变参数,会将关键字参数作为传递给函数,然后转换成键值对,用**表示:**kwargs

def test3(x,y,z=3,*args,**kwargs):  # **kwargs接受关键字参数,作为键值对存入字典
    print(x,y,z,args,kwargs)

test3(1,2,3,4,5,6,name = '1',age = 22)  # 此处的关键字参数作为键值对,存入**kwargs: {‘name’:'1','age':22}

5. 参数的顺序

当一个函数同时存在多种参数类型时,参数的排序应该是:位置参数、默认参数、关键字参数、*args、**kwargs

eg.

def test3(x,y,z=3,*args,**kwargs):  
    print(x,y,z,args,kwargs)

6. 其他参数语法 / *(python 3.8新增)

/ 之前的参数必须使用位置参数,不能使用键值对形式的关键字参数。

* 之后的参数必须使用关键字参数

/* 之间的参数,关键字参数或者位置参数都可以使用

def get(a,b,/,c,*,d):  # a,b 必须是位置参数。c 可以是位置参数也可以是关键字参数。d 必须使用关键字参数
    print(a,b,c,d)

get(1,2,c=3,d=4)
posted @ 2019-10-30 13:04  wztshine  阅读(189)  评论(0编辑  收藏  举报