python 星号的使用

python 星号的使用

在调用或者使用函数的时候经常会出现*,有的时候用一个,有的时候用两个,这个含义具体是什么呢?

定义方法时使用星号

一个星号的情况:

def fun(*args):
    print(isinstance(args, tuple)) #返回的是True
    for i in args:
        print(i)
fun(1, 2, 3)

上面的例子表示,我们虽然传递了3个参数1, 2, 3,但是fun函数把他们放到了一个元组。并且参数的个数不限。

两个星号的情况:

def fun2(**kwargs):
    print(isinstance(kwargs, dict)) #返回的是True
    pass
fun2(a=1, b=2, c=3)

上面的例子表明,使用两个星号,我们传递的参数是被当作一个字典来进行传递的,参数的个数不限。其实我们看kwargs这个名字就可以推出,这个参数是字典类型的。

调用方法时使用星号

一个星号的情况

def fun(a, b, c):
    return a+b+c
test = [1, 2, 3]
print(fun(*test))
#把序列test中的每个元素,当作位置参数传递到函数中去,就不用test[0],test[1]这样了

前提是传递序列中元素的个数应该和函数定义的参数。

实际上使用一个星号其实是对列表进行解包操作。

两个星号的情况

def fun(c, b, a):#注意顺序
	return a==1 and b==2 and c==3
test = {'a':1, 'b':2, 'c':3}
print(fun(**test))

虽然字典中的定义的数据和函数定义的顺序不一致,但是我们是按照关键字来进行函数赋值的,所以这个函数返回的结构是True

使用两个星号实际是对字典进行解包操作。

原文地址:https://www.cnblogs.com/alking1001/p/13633850.html