python函数的万能参数

Python评论388阅读模式

我们通过一个简单的事例来展示一下函数的万能参数,我们先写一个最简单的函数

def test(*args,**kwargs):
    print(args,kwargs)

然后定义两个变量文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

l = [1,2,3,4]
d = {"a":1,"b":2}

下面我们分别看下两种传参的方式有什么不同文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

第一种方式文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

test(l,d)

如果是使用上面的方式传参,那么l,d这2个变量都会传递给args这个形参,作为args变量的两个元素,kwargs是一个空的字典,没有任何参数传递一个他文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

([1, 2, 3, 4], {'a': 1, 'b': 2}) {}

我们可以看到列表l和字典d被当做一个tuple的两个元素了文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

第二种方式文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

test(*l,**d)

如果是上面的方式传参,那么l这个变量就会被赋值给args,d这个变量就会被赋值给kwargs文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

(1, 2, 3, 4) {'a': 1, 'b': 2}

通过上面的演示,你应该基本上了解python的万能参数了吧,也知道如果函数使用万能参数,你应该如何进行传参了把文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

今天被搞糊涂了,又把万能参数梳理一下文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

大家先看下这个函数文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

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)

我执行的结果如下文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

python函数的万能参数文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

下面我来解释一下文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

第一种调用函数的方式,传递了一个字典进去,这个字典会被当做一个整体传递进去,这个字典会被赋值给位置变了,也就是action文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

第二种调用函数的方法,通过**字典的方法传递进去,他实际是这样传递的a=1,b=2这样传递进去的,实际上一个命名变量,而这2个变量的名称都不action,所以第二中调用的方式的结果就是文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

action为none文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

kwargs就是一个字典文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

我们在看来下第三种调用的方法文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

d = {"action":"action","a":1}
foo(**d)

下面在看下结果,是否就明白了一些了文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

python函数的万能参数文章源自爱尚资源教程网-https://www.23jcw.net/9804.html

相关文章
版权声明:文章图片资源来源于网络,如有侵权,请留言删除!!!
  • 温馨提示:如遇到资源下载不了,或者文章没有解决你的问题的,可以联系我们帮你处理!!!
  • 转载请务必保留本文链接:https://www.23jcw.net/9804.html

发表评论