Python基础:关于星号元组*args和双星号字典**kwargs作为实参的使用总结
2018-11-04 17:48
302 查看
许多初学者或Python爱好者可能都遇到过用星号元组*args和双星号字典**kwargs作为实参来使用的困惑,这里本人举了几个小例子来阐述一下总结心得。
1. 星号元组*args传参,如
:
def fn(a,b,c,d): print(a,b,c,d) return tup = (5,6,7,8) fn(*tup) 输出结果:5 6 7 8
上述将变量tup,加上*作为实参传入函数中后,即依次对应着形参列表进行赋值,实质上是位置传参,如果形参数量与元组内元素数量不符,则会报数量不匹配的错误。
如果是下面方式定义函数的形参列表,则不会有上述的错误产生~想怎么传参就怎么传参!
def fn(*args): print(args) return tup = (1,2,3,4,5,6,7) fn(*tup,1,2,3,4,) 输出结果: (1, 2, 3, 4, 5, 6, 7,1,2,3,4)
# 1. 双星号字典kwargs传参,如**
def fn(a,b,c,d): print(a,b,c,d) return dic = { 'a':5, 'b':6, 'c':7, 'd':8, } fn(**dic)
输出结果:5 6 7 8
上述将变量dic,加上**作为实参传入函数中后,即依次对应着形参列表进行赋值,实质上为关键字传参,如果形参数量与元组内元素数量不符,则会报数量不匹配的错误。
同理:如果是下面方式定义函数的形参列表,则不会有上述的错误产生~想怎么传参就怎么传参!
def fn(**kwargs): print(kwargs) return dic = { 'a':5, 'b':6, 'c':7, 'd':8, } fn(**dic,e=1,f=2)
输出结果:{‘a’: 5, ‘b’: 6, ‘c’: 7, ‘d’: 8, ‘e’: 1, ‘f’: 2}
注意:实参若挨个传输,必须为关键字传参的形式,且关键字变量名不可重复,如fn(**dic,a=1),这样传参就会报错,因为出现了2个a变量。
结论:星号元组和双星号字典的传参方式,可以理解为在普通的元组或者字典变量名前加‘’*‘’或者“**”,并赋予了该变量名特殊的功能:
1.若该特殊变量出现在形参列表中,则会将传入的变量中符合条件的元素纳入到该特殊变量中。 2.若该特殊变量出现在实参列表中,则会将其中的元素拆分成对应元素,并可以被形参列表中的参数获取
以上仅为个人观点,若有疏漏,请各位指点!
相关文章推荐
- python基础总结二:判断语句、循环语句、字符串遍历、以及列表、元组、字典的简单使用 。
- python字典(dictionary)使用:基本函数code实例,字典的合并、排序、copy,函数中*args 和**kwargs做形参和实参
- python字符串,元组,列表,集合的基础总结
- python基础教程总结1——列表和元组
- python关于序列中的列表和元组总结
- 黑客走开系列1:Python使用元组做函数实参让代码更安全!
- 2.python基础之—列表,元组,字典,集合,字符串的使用方法
- Python基础之列表、元组、字典、集合的使用
- if ...__name__使用技巧总结 分类: python基础学习 python Module python 2013-11-01 14:51 262人阅读 评论(0) 收藏
- python基础:os模块中关于文件/目录常用的函数使用方法
- python关于BIF、标准库方法使用的注意事项总结
- 笔记--python列表及元组以及关于列表操作的函数使用
- 【阶段总结】关于Python使用的一些总结
- Python中列表List[]和元组tuple()类型使用总结
- python基础教程之元组操作使用详解
- Python中关于使用模块的基础知识
- Python中关于使用模块的基础知识
- java基础总结 -- 泛型 在类、接口、方法、匿名类、元组等使用 堆栈例子 商店模型
- python字典(dictionary)使用:基本函数code实例,字典的合并、排序、copy,函数中*args 和**kwargs做形参和实参
- python基础学习总结——变量使用、数据类型