python 的 *args和 **kwargs 分别是什么意思

看参数源码里面方法里面总是带有*args和**kwargs 一直没有弄清楚是什么意思,感觉和很不明觉厉,一直没有时间弄清楚,今天有时间,觉得还是弄清楚比较好,就百度了一下,网上有好多的简单直白的翻译,按照自己理解的在记录一下,巩固巩固。

  1. *args的含义 按照我的理解是不同数量的变量的集合,元祖形式。举例

def show (*arg):
	print(arg)
show(1)
show(1,2)
show('hello','world','!!!')
##################################################
(1,)
(1, 2)
('hello', 'world', '!!!')

  1. **kwargs 的含义 这个就是以key=value是存储的关键字参数的集合 dict 形式 举例

def show(**arg):
    print(arg)
show(o1=2)
show(one=2, two='je')
show(one='hello', two='world', three='!!!')
##################################################
{'o1': 2}
{'one': 2, 'two': 'je'}
{'one': 'hello', 'two': 'world', 'three': '!!!'}

把代码改了改,

def show(**arg):
    print(arg.get('two'))
    print(arg.get('ones', 'None'))
    print(arg['three'])
show(one='hello', two='world', three='!!!')
#############################################################
world
None
!!!

总结: 整理完毕之后,瞬间觉得自己技能等级+1,但是可能是我的基础不咋扎实,碰到了几个个小问题。

  1. 这个key不能是数值开头,不要问我是怎么知道的。

  2. dict.get(‘key’,‘没有key返回的值’),带默认返回值的要写在 没有默认返回值的参数后面

  3. arg[‘key’] 这种不能写在 不带默认返回值的get()前面

  4. dict.get(‘key’,‘没有key返回的值’)和arg[‘key’] 不分先后

猜你喜欢

转载自blog.csdn.net/linxue110/article/details/85015392