关于python:Python的参数类型

1次阅读

共计 1361 个字符,预计需要花费 4 分钟才能阅读完成。

形式参数(形参)

在定义函数阶段定义的参数称之为形参, 相当于变量名

地位形参(一般形参)

地位形参:在函数定义阶段, 依照从左到右的程序定义
特点:必须被传值, 且实参加形参 依照程序一一对应, 多一个少一个都不行!

def func():
    pass

默认形参

默认形参:在函数定义阶段, 就曾经被赋值的参数

def func(x, y=1):
    pass

一般收集形参

一般收集形参:用于接管多出局部的地位实参, 溢出的局部会被 保留成元组类型, 而后赋值给 前面的形参接管

def func(x, y, *args):
    print(x, y)
    print(args)

func(1, 2, 3, 4, 5, 6, 7, 78, 8, 89)

* 后的形参名个别定义为args, 为约定俗成

关键字收集形参

关键字收集形参:用于接管多出局部的关键字实参, 溢出的局部会被 \\保留成字典类型, 而后赋值给 \\前面的形参接管

def func(x, y, **kwargs):
    print(x, y)
    print(kwargs)

func(a=1, b=2, c=3, x=4, y=5, z=6)

** 后的形参名个别定义为kwargs, 为约定俗成

命名要害字形参

命名要害字形参:在函数定义时,* 后定义的参数, 就是命名关键字参数
特点:命名关键字实参必须依照 key=value 的模式为其传参

# y= 2 是带有默认值的命名要害字形参, 并非是默认形参, 所以能够搁置在 z 的后面

def func(x, *, y=2, z):
    print(x)
    # 其中 y 和 z 就是命名要害字形参
    print(y, z)

func(1, z=3)

理论参数(实参)

在调用函数阶段定义的参数称之为实参, 相当于变量值

地位实参(一般实参)

地位实参:在函数调用阶段, 依照从左到右的程序顺次传入的值
特点:实参加形参 依照程序一一对应

def func(x, y):
    print(x + y)

func(1, 2)

关键字实参

关键字实参:在函数调用阶段, 依照 key=value 的模式传入的值
特点:指定给具体的某个形参传值, 能够不依照程序传值

def func(x, y):
    print(x + y)

func(y=1, x=2)
func(x=2, y=1)

\* 的应用

  1. \和 \* 在函数定义处应用
    1) \*:把多余的一般实参打包成元组
    2) \\:把多余的关键字实参打包成字典
  2. \和 \* 在函数调用处应用
    1) \*:对元组或列表进行解包
    2) \\:对字典进行解包
  3. \和 \* 同时在函数定义处和调用处应用
    1) 先解包变成地位形参
    2) 再将多余的地位形参打包
# 示例一
def func(x, y, z):
    print(x, y, z)

func(*[1, 2, 3])
func(*(1, 2, 3))
func(**{"x": 1, "y": 2, "z": 3})

# 实例二
def func(x, y, z, *args):
    print(x, y, z)
    print(args)

func(5, 6, 7, *[1, 2, 3])

形参加实参的关系

  1. 在调用阶段, 实参会绑定给形参
  2. 这种绑定关系只能在函数体内应用
  3. 实参加形参的绑定关系只在函数调用时失效, 函数调用完结后解除绑定关系

总结

  1. 地位实参加关键字实参混合应用时, 地位实参必须放在关键字实参后面(语法规定)
  2. 地位形参加默认形参混合应用时, 地位形参必须在默认形参的右边
  3. 不能为同一形参反复传值
  4. 默认形参对应的实参可传可不传
  5. *args**kwargs 混合应用时,*args必须写在 **kwargs 的后面, 否则会报语法错误
正文完
 0