大家根据一个简易的例证来展现一下涵数的全能主要参数,大家先写一个非常简单的涵数
def test(*args,**kwargs): print(args,kwargs)
随后界定2个变量
l = [1,2,3,4] d = {"a":1,"b":2}
下边大家各自看下二种传参的方式有哪些不一样
第一种方式
test(l,d)
如果是应用上边的方式传参 ,那麼l,d这两个变量都是会传送给args这一形参,做为args变量的2个原素 ,kwargs是一个空的字典 ,沒有一切参数传递一个他
([1, 2, 3, 4], {'a': 1, 'b': 2}) {}
我们可以见到目录l和字典d被作为一个tuple的2个原素了
第二种方式
test(*l,**d)
如果是上边的方式传参,那麼l这一变量就会被取值给args,d这一变量就会被取值给kwargs
(1, 2, 3, 4) {'a': 1, 'b': 2}
根据上边的演试 ,你应该大部分掌握python的全能主要参数了吧,也了解假如涵数应用全能主要参数,你应该怎样开展传参了把
今日被搞糊涂了 ,又把全能主要参数整理一下
大伙儿首先看下这一涵数
def foo(action=None,**kwargs): print("action",action,sep="=================>") print("kwargs", kwargs, sep="=================>") d = {"a":1,"b":2} foo(d) print("=".center(100,"*")) foo(**d)
我实行的結果以下
下边我解释一下
第一种调用函数的方式,传送了一个字典进来,这一字典会被作为一个总体传送进来 ,这一字典会被取值给部位发生变化,也就是action
第二种调用函数的方式,根据**字典的方式传送进来 ,他具体是那样传送的a=1,b=2那样传送进来的,事实上一个取名变量 ,而这两个变量的名字也不action ,因此 第二中启用的方式的結果便是
action为none
kwargs便是一个字典
我们在来看下第三种启用的方式
d = {"action":"action","a":1} foo(**d)
下边在看下結果,是不是就懂了一些了