Python中*args参数的容器类型疑问:为何是tuple而非list?
关于Python中*args参数类型的疑问解答
你的测试结果是正确的,*args在函数内部被打包成的容器类型是tuple(元组),应该是你的教材出现了笔误。
Python的设计规范里,*args的作用就是把传入的可变数量位置参数打包为一个不可变的tuple——这是因为函数参数集合在传递后不应该被随意修改,tuple的不可变性刚好能避免函数内部意外篡改传入的参数集合。
你的测试代码已经能直接验证这一点:
def func(*args): s=0 for a in args: s += a return s, isinstance(args,tuple)
调用该函数(比如func(1,2,3))会返回(6, True),明确证明args的类型是tuple。
如果需要将其转换为list使用,只需要手动执行list(args)即可,但默认的打包类型始终是tuple。
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

