괄호 안의 문자열은 왜 그 문자열만으로 튜플을 만들지 않습니까?
인수에서 Python 스레드화 및 문자열 전송에 문제가 있습니다.
def processLine(line) :
print "hello";
return;
.
dRecieved = connFile.readline();
processThread = threading.Thread(target=processLine, args=(dRecieved));
processThread.start();
여기서 dReceived는 연결에서 읽은 한 줄의 문자열입니다.현재 "안녕하세요"를 인쇄하는 작업이 하나뿐인 간단한 기능을 호출합니다.
하지만 다음과 같은 오류가 발생합니다.
Traceback (most recent call last):
File "C:\Python25\lib\threading.py", line 486, in __bootstrap_inner
self.run()
File "C:\Python25\lib\threading.py", line 446, in run
self.__target(*self.__args, **self.__kwargs)
TypeError: processLine() takes exactly 1 arguments (232 given)
232는 제가 전달하려고 하는 문자열의 길이이기 때문에 각 문자로 나누어 그렇게 주장을 전달하려고 하는 것 같습니다.그냥 정상적으로 기능을 호출하면 되는데, 꼭 별도의 스레드로 설정하고 싶습니다.
튜플을 만들려고 하는데 문자열을 괄호로 묶는 것뿐입니다 :)
','를 추가합니다.
dRecieved = connFile.readline()
processThread = threading.Thread(target=processLine, args=(dRecieved,)) # <- note extra ','
processThread.start()
또는 대괄호를 사용하여 목록을 작성합니다.
dRecieved = connFile.readline()
processThread = threading.Thread(target=processLine, args=[dRecieved]) # <- 1 element list
processThread.start()
스택 추적에서 다음을 확인할 수 있습니다.self.__target(*self.__args, **self.__kwargs)
그*self.__args
문자열을 문자 목록으로 변환하여 문자를 전달합니다.processLine
기능.하나의 요소 목록을 전달하면 해당 요소가 첫 번째 인수(사용자의 경우 문자열)로 전달됩니다.
저는 이곳에서 더 많은 배경 지식을 제공하기를 희망합니다.
class threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)
args는 대상 호출에 대한 인수 튜플입니다.기본값은 ()입니다.
둘째, 파이썬에서 다음과 같은 정보를 제공합니다.tuple
:
빈 튜플은 빈 괄호 쌍으로 구성되며, 한 항목이 있는 튜플은 쉼표로 값을 따르는 방식으로 구성됩니다(괄호 안에 단일 값을 포함하기에는 충분하지 않음).
반면에, 문자열은 다음과 같은 일련의 문자입니다.'abc'[1] == 'b'
그래서 만약 문자열을 보낸다면,args
괄호 안에서도 각 문자는 단일 매개 변수로 처리됩니다.
그러나 Python은 매우 통합적이며 추가 인수를 허용할 수 있는 JavaScript와 다릅니다.대신에, 그것은 던집니다.TypeError
불평을 늘어놓다
from threading import Thread
from time import sleep
def run(name):
for x in range(10):
print("helo "+name)
sleep(1)
def run1():
for x in range(10):
print("hi")
sleep(1)
T=Thread(target=run,args=("Ayla",))
T1=Thread(target=run1)
T.start()
sleep(0.2)
T1.start()
T.join()
T1.join()
print("Bye")
언급URL : https://stackoverflow.com/questions/3221655/why-doesnt-a-string-in-parentheses-make-a-tuple-with-just-that-string
'programing' 카테고리의 다른 글
미학 및 gem_text를 사용할 때 범례에서 'a' 제거 (0) | 2023.06.05 |
---|---|
R을 사용하여 압축된 데이터 파일 다운로드, 압축 풀기 및 데이터 가져오기 (0) | 2023.06.05 |
Bash를 사용하여 텍스트 파일에 데이터를 열고 쓰시겠습니까? (0) | 2023.06.05 |
날짜별 그룹화 방법 추가 mariadb (0) | 2023.06.05 |
그리드 레이아웃에서 제스처 감지 실행 (0) | 2023.06.05 |