python中*和**之间的区别和联系

1、* 和 ** 在形参里面时,收集参数

*:对于一个参数前面加上*,可以输入多个参数, 并将提供的所有值放在一个元组中收集起来,如果没有提供参数,将是一个空元组。

**:对于一个参数前面加上*,可以输入多个参数, 并将提供的所有值放在一个字典中收集起来,如果没有提供参数,将是一个空字典。

2、* 和 ** 在实参里面时,分配参数

*:在实参里面,输入参数时,* 将提供的元组、列表输入分配,作用和收集时相反的。

**:在实参里面,输入参数时,** 将提供的字典输入分配,作用和收集时相反的

 

具体的区别和联系可以详见下面的代码示例:

def story1(*params):
    print(params)


def story2(*params):
    print("There is a {job}, his name is {name}.".format_map(params[1]))


def story3(**params):
    print(params)


def story4(**params):
    print("There is a {job}, his name is {name}.".format_map(params))


num1 = [1, 2, 3]
info1 = {"name": "Tom", "job": "king"}
info2 = {"name": "Jhon", "job": "teacher"}
info3 = {"age": 16, "address": "beijing"}
story1(*num1)  # 将列表3个值分配下去,相当于story(1,2,3)
story1(info1, info2)  # 将多个字典变量作参数传入,最后收集起来作为一个元组
story2(info1, info2)  # 参数传入后,将元组内的字典的值读取出来
story3(name="Tom", job="king")  # 传入多个参数,收集后作为一个字典
story3(**info1, **info3)  # 将多个字典参数分配,传入后重新变为一个字典
story4(**info1, **info3)

# 运行结果
(1, 2, 3)
({'name': 'Tom', 'job': 'king'}, {'name': 'Jhon', 'job': 'teacher'})
There is a teacher, his name is Jhon.
{'name': 'Tom', 'job': 'king'}
{'name': 'Tom', 'job': 'king', 'age': 16, 'address': 'beijing'}
There is a king, his name is Tom.

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楊木木8023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值