*参数和**参数区别讲解

"""
    *参数与**参数是python中的中带你,他们都被称为可变参数,我们经常会在代码中看到*a,**b
    作为函数定义时:
    1、*参数收集所有未匹配的位置参数组成一个tuple对象,局部变量a指向此tuple对象
    2、**参数收集所有未匹配的关键字参数组成一个dic对象,局部变量b指向此dic对象
    def temp(*a,**b):
        pass
    作为函数调用时:
    1、*参数用于解包tuple对象的每个元素,作为一个一个的位置参数传入到函数中。
    2、**参数用于解包dic对象的每个元素,作为一个一个的关键字参数传入到函数中。
    mytuple=('wang','li','sun')
    temp(*mytuple)
    等同于---
    temp('wang','li','sun')

"""

# 包含两个位置参数函数
# def print_str(first, second):
#     print(first)
#     print(second)
#
# print_str('hello')
# 传一个参数这时会报错:缺少一个参数TypeError: print_str() missing 1 required positional argument: 'second'
# ==========
# 思考如何修改print_str()参数可以让他接受一个参数、也可以接收两个参数、或者接受数量不定的更多参数?
# 首先考虑将后面参数修改为可变参数
# def print_str(first, *secondnd):
#     print(first)
#     print(second)
#
#
# print_str('hello')  # hello 和()一个空元组对象
# print_str('hello', 'xxw', 'dw', 'xw')
# ==========
# 调用print_str()函数时,直接传入一个*参数会发生什么

# num = ('1', '2', '3', '4', '5')
#
#
# def print_str(first,*second):
#     print(first)
#     print(second)
#
#
# if __name__ == '__main__':
#     print_str(*num)# 1 和('2', '3', '4', '5')

# ============
# 如果未定义可变参数呢
# num = ('1', '2', '3', '4', '5')
# num1 = ('1', '2', )
#
# def print_str(first,second):
#     print(first)
#     print(second)
#
#
# if __name__ == '__main__':
#     print_str(*num1) #1和2
#     print_str(*num) #报错
# 这里等同与print_str(1,2,3,4,5),但是他只能传两个参数所以报错
# 这里在函数调用时,表示解包功能,注意解包时,tuple元素数量要与函数的位置参数总数一至
# ===============================
# 函数定义中,参数名称前有两个**
# def print_str(**thing):
#     print(thing)
#
#
# print_str(first=5, second=10)  # {'first': 5, 'second': 10}
# ================
#
thing = {'name': 'xw', 'age': '22'}


def print_str(first, **thing):
    print(first)
    print(thing)


print_str(2, **thing)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值