2016-04-03 25 views
5

seine Ich habe dieses Stück Code, in dem ich versuche,Python: Typeerror: Argument nach * muss eine Sequenz

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() 

ein UDP-Datagramm in einem neuen Thread zu senden, aber wenn ich versuche, die Buchse als eine geben Argument an die Funktion, eine Typeerror-Ausnahme ausgelöst:

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 

Was das bedeutet?

Antwort

11

Sie müssen das Senden , nach s hinzufügen nur s-args=() versucht, eine Reihe von Argumenten zu entpacken, anstatt nur, dass einzelne arguement zu senden.

So müssten Sie threading.Thread(target=send, args=(s,)).start()

Auch splat oder * (Sternchen) Operator könnte in this Frage hilfreich sein, zu erklären Nutzung es ist und Argumente im Allgemeinen

unzipping
Verwandte Themen