欢迎各位兄弟 发布技术文章
这里的技术是共享的
在Python中,当你在函数定义或函数调用中看到变量前面带有*
时,它通常有两种不同的含义:
在函数定义中:它表示该函数可以接受任意数量的位置参数,并将它们收集到一个元组中。这被称为“可变位置参数”或“非关键字可变参数”。
python复制代码def func(*args): for arg in args: print(arg)
func(1, 2, 3, 4) # 输出: 1 2 3 4
在这个例子中,*args
会捕获所有传递给func
的位置参数,并将它们存储在一个名为args
的元组中。
2. 在函数调用中:它表示你正在将一个元组或列表的元素“解包”为位置参数。这被称为“参数解包”。
python复制代码def func(a, b, c): print(a, b, c)
args = (1, 2, 3) func(*args) # 输出: 1 2 3
在这个例子中,*args
将元组args
的元素解包为位置参数,并将它们传递给func
函数。
此外,还有一个与*
类似的符号**
,它用于处理关键字参数:
在函数定义中:它表示该函数可以接受任意数量的关键字参数,并将它们收集到一个字典中。这被称为“可变关键字参数”。
python复制代码def func(**kwargs): for key, value in kwargs.items(): print(f"{key} = {value}")
func(a=1, b=2, c=3) # 输出: a = 1, b = 2, c = 3
在函数调用中:它表示你正在将一个字典的键值对“解包”为关键字参数。
python复制代码def func(a, b, c): print(a, b, c)
kwargs = {'a': 1, 'b': 2, 'c': 3} func(**kwargs) # 输出: 1 2 3
希望这可以帮助你理解Python中*
和**
的用法!