Python:TypeError:*后面的参数必须是sequen

2024-04-23 09:04:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段代码,试图在新线程中发送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

那是什么意思?


Tags: inpyselfsendtargetaddresslibusr
1条回答
网友
1楼 · 发布于 2024-04-23 09:04:33

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

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

此外,splat-*运算符可能在解释其用法和一般解压缩参数的问题中很有用

相关问题 更多 >