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

使用Timer调用带参函数warnTime时出现TypeError报错求助

问题原因与解决方法

你的问题出在Timer调用目标函数的方式上:Timer默认只会直接调用你传入的函数,不会自动传递参数,但warnTime必须接收一个i参数,所以触发了TypeError。

下面是几种可行的解决办法:

  • 用Timer的args参数传参
    这是最规范的做法,Timer的第三个参数可以传一个元组,里面放你要传给目标函数的参数:

    def warnTime(i):
      i += 1
      print(i)
    
    t = Timer(20, warnTime, args=(0,))  # 这里把初始值0传给i
    t.start()
    
  • 用lambda包装函数
    通过lambda匿名函数来间接调用warnTime并传入参数:

    def warnTime(i):
      i += 1
      print(i)
    
    t = Timer(20, lambda: warnTime(0))
    t.start()
    
  • 给函数参数设置默认值
    修改warnTime,给i加默认值,这样即使没传参数也能正常执行:

    def warnTime(i=0):  # 设置默认值0
      i += 1
      print(i)
    
    t = Timer(20, warnTime)
    t.start()
    

另外解释下你之前的尝试为什么没用:提前定义i=0只是声明了全局变量,但Timer调用warnTime时并没有把这个变量传递给函数参数;直接调用warnTime(0)本身是正常的,但你的Timer写法没传参,所以还是会触发错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 18:37:06