python函数支持哪些参数类型_Python函数的主要参数类型

形式参数(形参)

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

位置形参(普通形参)

位置形参:在函数定义阶段,按照从左到右的顺序定义

特点:必须被传值,且实参与形参按照顺序一一对应,多一个少一个都不行!

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)

*和**的使用

*和**在函数定义处使用

*:把多余的普通实参打包成元组

**:把多余的关键字实参打包成字典

*和**在函数调用处使用

*:对元组或列表进行解包

**:对字典进行解包

*和**同时在函数定义处和调用处使用

先解包变成位置形参

再将多余的位置形参打包

# 示例一

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])

形参与实参的关系

在调用阶段,实参会绑定给形参

这种绑定关系只能在函数体内使用

实参与形参的绑定关系只在函数调用时生效,函数调用结束后解除绑定关系

总结

位置实参与关键字实参混合使用时,位置实参必须放在关键字实参前面(语法规定)

位置形参与默认形参混合使用时,位置形参必须在默认形参的左边

不能为同一形参重复传值

默认形参对应的实参可传可不传

*args与**kwargs混合使用时,*args必须写在**kwargs的前面,否则会报语法错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值