第一个作用:接收参数
*args
:接收多传的位置参数,将多传的位置参数封装成为一个tuple
(元组)**kwgrgs
:接收多传的关键字参数,将多传的关键字参数封装成一个dict
(字典)- 比如:
def foo(*args, **kwargs):
print(type(args), args)
print(type(kwargs), kwargs)
if __name__ == "__main__":
foo(1, 2, 3, name="1", age=18)
第二个作用:传递参数
*
:可以将列表或元组元素分解成单个元素,从而将元素当成位置参数进行传递**
:可以将字典元素分解成位置参数进行传递- 比如:
def foo(*args, **kwargs):
print(type(args), args)
print(type(kwargs), kwargs)
if __name__ == "__main__":
lt = (1, 2, 3, 4, 5)
dic = {'name': 16, 'age': 18}
foo(*lt, **dic)
*
的另外一个作用
- 在程序中导入模块时:
import *
,实际上导入的是 __all__
所包含的内容 - 比如:
__all__ = ('a', 'b', 'c')
a = 123
b = 456
c = 789
d = 120
e = 345
from xxx import *
print(a)
print(b)
print(c)
print(d)
print(e)
NameError: name 'd' is not defined