文章目录
- 前言
- 一、`*`与`**`在函数定义时
- 二、`*`与`**`在函数调用时
前言
在python中*与**的使用要区分是在函数定义时还是在函数调用时。
一、*与**在函数定义时
def deng(*args,**kwargs):
print(args)
print(kwargs)
deng(1,2,3,a = 4,b = 5)
在函数定义时参数前面使用*,代表将收集调用函数时的非关键字参数,并且存储在一个元组args中。
在函数定义时参数前面使用**,代表将收集调用函数时的关键字参数,并且存储在一个字典kwargs中。

二、*与**在函数调用时
在函数调用时参数前面使用*,代表将该参数解包(将序列中的元素按照位置参数传进函数)
def deng(a,b,c,d):
print(a)
print(b)
print(c)
print(d)
list_a = [1,2,3,4]
deng(*list_a)

在函数调用时参数前面使用**,代表将该参数解包(将字典中的元素按照关键字参数传进函数)
def deng(a,b,c,d):
print(a)
print(b)
print(c)
print(d)
dict_a = {'a' : 1,'b' : 3,'c' : 4,'d' : 2 }
deng(**dict_a)
















![【洛谷】p1825 [USACO11OPEN] Corn Maze S](https://img-blog.csdnimg.cn/017b6be427c44873a2268f3635c1c0fd.png#pic_center)


