python给函数传入不定个数的参数(带*号的参数)

我们在读python 代码时,经常会看到例如:
test_func(*param) 这样的函数,这代表什么意思呢?

我们写代码来加深对这个带*号参数的理解:

情况一:

看这段代码

# 带一个星 *
def test_func(*param):
    # 数据以元组显示
    print(type(param))
    print(param)

# 调用
test_func('bar', 2, 3)

运行结果:

<class 'tuple'>
('bar', 2, 3)

从运行的结果可以看到,传入不同类型的参数给函数时,函数带一个*号的参数会解释为 tuple 元组的数据(<class ‘tuple’>)。

情况二:

那么带两个星号会怎样?

# 传入两个星 **
def test_func2(**param):
    # 数据以字典显示
    print(type(param))
    print(param)

# 调用
#test_func2('bar', 2, 3)

首先想想,如果我们再传test_func()同样的参数会怎样?

运行结果:

file

运行结果报错!

那应该怎样传参数呢?

# 传入两个星 **
def test_func2(**param):
    # 数据以字典显示
    print(type(param))
    print(param)

# 调用
test_func2(a='bar', b=2, c=3)

运行结果:

<class 'dict'>
{'a': 'bar', 'b': 2, 'c': 3}

结果显示传入的对应参数解释为字典dict类型。

情况三:

我们经常会遇到这样的情况,希望函数至少要传一个参数,其他的参数可有没有,应该怎么做呢?

# 混合使用

def test_func3(param1='foo', *param2, **param3):

    print(type(param1))
    print(param1)
    print(type(param2))
    print(param2)
    print(type(param3))
    print(param3)

# 调用
test_func3('bar', 1, 2, 3, a='4', b='5', c='6')

运行结果:

<class 'str'>
bar
<class 'tuple'>
(1, 2, 3)
<class 'dict'>
{'a': '4', 'b': '5', 'c': '6'}

结语:

从上面的程序和运行结果中,我们已初步了解了带星号参数的基本用法。只要自己修改一下,多跑几次,很快就可以熟悉理解。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值