gpt4 book ai didi

Python:TypeError:* 之后的参数必须是一个序列

转载 作者:太空狗 更新时间:2023-10-29 19:33:36 26 4
gpt4 key购买 nike

我有这段代码,我尝试在新线程中发送 UDP 数据报

import threading, socket

address = ("localhost", 9999)


def send(sock):
sock.sendto("Message", address)
print "sent"

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
threading.Thread(target=send, args=(s)).start()

但是当我尝试将套接字作为函数的参数时,会抛出 TypeError 异常:

Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in
self.__target(*self.__args, **self.__kwargs)
TypeError: send() argument after * must be a sequence, not _socketobject

这是什么意思?

最佳答案

您需要在变量 s 之后添加一个逗号 - ,。仅将 s 发送到 args=() 试图解压缩多个参数,而不是仅发送单个参数。

所以你有 threading.Thread(target=send, args=(s,)).start()

还有 splat - * - 运算符可能在 this 中有用解释它的用法和一般解压缩参数的问题

关于Python:TypeError:* 之后的参数必须是一个序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36387596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com