无法创建线程,因为 "Takes 1 positional argument but 4 given" 只有当我给它一个长于 1 的字符串时

Can't create thread because "Takes 1 positional argument but 4 given" only when I give it a string longer than 1

我正在 python 制作一个聊天服务器。到目前为止,我一直在很好地创建线程,但是当我尝试使用用户名的参数创建线程时,它失败并出现上述错误 - 但仅当用户名超过 1 个字符时。

如果我给它用户名 "A",它工作正常,但用户名 "Alex" 给出错误。我该如何解决这个问题?

他们在同一个class.

我创建线程

Thread(target=Main.ManageClientHighLevel, args=(Username)).start()

那个函数的开始是:

def ManageClientHighLevel(Username):

我该如何解决这个问题?

Threadargs 参数需要一个 Iterable,因此您必须在 tuple:

中提供您的单个参数
Thread(target=Main.ManageClientHighLevel, args=(Username,)).start()

否则,它会将您提供的单个字符串作为 Iterable 处理并遍历每个字符。

您必须将用户名转换为元组:(Username,) 因为字符串是可迭代的,这意味着 "username" 实际上会被视为“(u,s,e,r,n, a,m,e)".