python函数中的参数_python函数中参数*与**区别_python函数中*[参数名]和**[参数名]的用处...

文章目录一、*[参数名]调用合法调用普通调用特殊调用错误方法正确方法非法调用默认参数总结二、**[参数名]调用合法调用普通调用特殊调用非法调用默认参数总结

一、*[参数名]

调用

合法调用

普通调用

*参数名一般写成*args, 如:

def func(*args):

print(args)

可以试着调用func:

>>> func(1)

(1,)

>>> func()

()

>>> func(1, 2, 3)

(1, 2, 3)

>>> func(dict(), set(), str(), int())

({}, set(), '', 0)

所以,我们发现,这样的函数可以传任意个参数(包括0),*会把参数打包成一个tuple,如(1,) () (1, 2, 3) ({}, set(), '', 0)。

特殊调用

如果已经有一个tuple对象,想传进去作为args呢?

首先定义一个tuple对象:

>>> tuple_object = (1, 2, 3)

>>> print(tuple_object)

(1, 2, 3)

错误方法

一般想到的都是这样的方法:

>>> func(tuple_object)

((1, 2, 3),)

((1, 2, 3),)? 不应该是(1, 2, 3)吗?

因为系统把它识别为一个args中的参数,所以args就是“tuple中有tuple”,不对。OH NO!

正确方法

给tuple_object前面打个*,OK:

>>> func(*tuple_object)

(1, 2, 3)

这就是“解包”。

非法调用

如果调用func(a=1, b=2)呢?请看:

>>> func(a=1, b=2)

得到TypeError:

Traceback (most recent call last):

File "", line 1, in

func(a=1, b=2)

TypeError: func() got an unexpected keyword argument 'a'

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值