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

Python中*args默认值设置及参数传递报错问题咨询

问题1:为何无法给*args设置=None,以及尝试代码的错误

  • Python语法明确规定,可变位置参数*args不允许设置默认值。*args的作用是收集函数调用时传入的多余位置参数,自动打包成一个元组,它默认就是空元组,不需要额外指定默认值。
  • 你写的if *args:是语法错误:*是解包运算符,不能直接用于条件判断。要判断是否传入了参数,直接用if args:即可(空元组在布尔判断中会被视为False)。
  • 其实根本不需要分情况判断:不管func是否需要参数,直接执行new_data = func(*args)就够了——如果args是空元组,这行代码等价于func(),完美适配无参数函数;如果args有内容,就会把参数传递给func。

问题2:报错TypeError: function takes 0 positional arguments but 1 were given的原因

你调用tmp2.refresh(hello_world, None)时,None会被*args收集成元组(None,),代码执行func(*args)就变成了hello_world(None)。但你的hello_world函数定义时不接受任何参数,自然会触发参数不匹配的错误。

  • 正确的调用方式是直接传入函数:tmp2.refresh(hello_world),此时*args是空元组,func(*args)等价于hello_world(),完全符合函数的参数要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:35:27