You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

list()函数仅接受1个参数,传入*args对应的参数为何可正常运行?

def foo(*args):
    return list(args)

foo(1,2) # [1,2]

运行正常的原因

  • 函数定义中带*前缀的args是可变位置参数标识,作用是把调用函数时传入的所有零散位置参数打包成 一个独立的元组,赋值给args变量。也就是说不管你给foo传多少个参数,args永远是单个元组对象,不存在多参数传入的情况。
  • 调用foo(1,2)时,两个入参1、2已经被打包为元组(1, 2),此时给list()传入的就是这一个元组参数,完全符合list()只接受0个或1个可迭代对象作为入参的要求。
  • 元组属于Python内置的可迭代对象,list()会遍历元组内的所有元素,生成对应列表,所以最终输出结果为[1, 2],整个调用逻辑完全合法。

内容的提问来源于stack exchange,提问作者kubaSpolsky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 16:45:00