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

如何向Thread创建函数传递list列表和dictionary字典参数

Python线程传递列表/字典参数的正确实现方式

原代码核心错误点

  • 参数传递逻辑不匹配:Thread的args参数用于传递位置参数,对应目标函数的位置形参/*args,如果目标函数定义了**kwargs接收关键字参数,需要使用Thread的kwargs参数传值
  • 参数语法错误:args要求传入元组类型,(args=mylist)的写法不符合语法规范,args是Thread的顶层参数,不需要嵌套括号
  • 取值逻辑错误:kwargs.values是字典的内置方法,需要加括号调用kwargs.values()才能拿到值集合,且如果只传单个对象不需要用**kwargs接收,直接用普通形参更简洁

推荐实现(普通形参接收,无需关键字参数)

from threading import Thread

# 直接定义形参接收传入的列表
def expectslist(received_list):
    # 此处received_list就是传入的mylist,可直接使用
    for item in received_list:
        print(item)

# 直接定义形参接收传入的字典
def expectsdict(received_dict):
    # 此处received_dict就是传入的mydict,可直接使用
    for k, v in received_dict.items():
        print(f"key:{k}, value:{v}")

def main():
    mylist = [1, 2, 3, 4] # 示例列表
    mydict = {"a":1, "b":2, "c":3} # 示例字典
    # args必须传元组,单个参数末尾要加逗号,避免被识别为普通括号
    thread1 = Thread(target=expectslist, args=(mylist,))
    thread2 = Thread(target=expectsdict, args=(mydict,))
    thread1.start()
    thread2.start()
    thread1.join()
    thread2.join()

if __name__ == "__main__":
    main()

关键字参数接收实现(如需使用**kwargs场景)

from threading import Thread

def expectslist(**kwargs):
    # 按传入的key取对应的列表对象
    received_list = kwargs.get("input_list")
    for item in received_list:
        print(item)

def expectsdict(**kwargs):
    # 按传入的key取对应的字典对象
    received_dict = kwargs.get("input_dict")
    for k, v in received_dict.items():
        print(f"key:{k}, value:{v}")

def main():
    mylist = [1, 2, 3, 4]
    mydict = {"a":1, "b":2, "c":3}
    # 用Thread的kwargs参数传递字典格式的关键字参数
    thread1 = Thread(target=expectslist, kwargs={"input_list": mylist})
    thread2 = Thread(target=expectsdict, kwargs={"input_dict": mydict})
    thread1.start()
    thread2.start()
    thread1.join()
    thread2.join()

if __name__ == "__main__":
    main()

注意:args传递单个参数时必须加末尾的逗号,比如(mylist,),否则Python会把括号识别为运算优先级符号,不会识别为元组,导致传参错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:54:03