python kwargs, 定义和调用函数时的*和**

python - What do * and ** before a variable name mean in a function signature? - Stack Overflow

复制代码
# * collects all the positional arguments in a tuple.
# ** collects all the keyword arguments in a dictionary.
def fn(*a, **kw): print(a); print(kw)

fn(1, 2, 3, 4, a=2, c=5, b=3)
# (1, 2, 3, 4)
# {'a': 2, 'c': 5, 'b': 3}

# In a function call:
# * unpacks a list or tuple into position arguments.
# ** unpacks a dictionary into keyword arguments.
lis = [1, 2, 3, 4]; dic = {'a': 10, 'b':20}

fn(*lis, **dic) # Same as fn(1, 2, 3, 4, a=10, b=20)
# (1, 2, 3, 4)
# {'a': 10, 'b': 20}

fn(lis, dic)
# ([1, 2, 3, 4], {'a': 10, 'b': 20})
# {}

# list可以修改其中的元素,tuple不可以。list用[和]括起来,tuple用(和)。
# (1)不是tuple, (1,)是个只有1个元素的tuple.
复制代码
posted @   Fun_with_Words  阅读(42)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?









 和4张牌。

点击右上角即可分享
微信分享提示