2016-04-03 23 views
5

मैं कोड के इस टुकड़े है, जिसमें मैं एक नया सूत्र में एक यूडीपी आंकड़ारेख भेजने का प्रयासपायथन: लेखन त्रुटि: * के बाद तर्क एक दृश्य होना चाहिए

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

लेकिन जब मैं एक के रूप में सॉकेट देने की कोशिश फ़ंक्शन के लिए तर्क, एक टाइपरर अपवाद फेंक दिया गया है:

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 

इसका क्या अर्थ है?

उत्तर

11

तुम बस sargs=() पर तर्कों की एक संख्या को अनपैक करने के बजाय सिर्फ इतना है कि एक तर्क भेजने के प्रयास कर रहा है भेजने s के बाद , जोड़ने की जरूरत है।

तो तुम होगा threading.Thread(target=send, args=(s,)).start()

इसके अलावा

splat या * (तारांकन) ऑपरेटर समझा यह उपयोग है और सामान्य

में तर्क अनज़िप this प्रश्न में उपयोगी हो सकता है
संबंधित मुद्दे