2017-04-05 4 views
2

Windows에서 Python 2.7 사용. self.line, = ax.plot(range(10))Python : 오브젝트 이름에 쉼표를 뒤 따르기

오브젝트 이름 지정 단계에서이 콤마는 무엇입니까 :

https://gist.github.com/chappers/bd910bfb0ed73c509802 내가 다음 줄을 발견

는 여기 파이썬 코드를 검토하는 동안? 나는 인터넷에서 조사했고 튜플,리스트, 사전에 대한 참조를 찾았지 만 클래스 - 객체 이름에 대해서는 언급하지 않았다. "ax.plot"에 대한 호출을 "범위"의 데이터로 '팩'합니까? 또는 기본 클래스의 메서드 목록을 만들 수 있습니까? 그래서, x, y = self.line.get_data()

내가 후행 쉼표를 제거 self.line.set_ydata(y - 0.2 * x)이 프로그램은 " '목록'객체에는 속성 'get_data를'이 없습니다"라는 오류와 함께 실패 객체처럼

나중에 프로그램을 호출합니다.

미리 감사드립니다.

답변

4

예, 포장을 풀고이라고합니다.

self.line, = ax.plot(range(10)) 

는 뭔가 ax.plot(range(10)) 수익을 첫 번째 요소를 복용하는 것과 같습니다

self.line = ax.plot(range(10))[0] 

self.line,ax.plot(range(10)) 목록 또는 하나의 요소로 구성된 튜플을 반환하는 것을 의미한다. 이것이 사실이 아닌 경우, 약간 다른 구문을 사용한다 :

self.line, second = ax.plot(range(10)) # if returns a pair 
self.line, second, third = ax.plot(range(10)) # if returns a triplet 
... 
self.line, *others = ax.plot(range(10)) # if returns a list of unknown length 
             # (supported I believe in python 3.5+) 

더 정교한 풀기도 가능하다 :

a, (b, c), d = [1, (2, 3), 4] 
+0

이 감사합니다. Python은 항상 새로운 것을 발견하기에 새로운 뭔가입니다. – JayJay123