return값은 두개인데 plot그림은 한개밖에 없어요

조회수 116회
import matplotlib.pyplot as plt
decisionNode = dict(boxstyle="sawtooth",fc="0.8")
leafNode = dict(boxstyle = "round4",fc="0.8")
arrow_args = dict(arrowstyle = "<-")

def plotNode(nodeTxt, centerPt, parentPt, nodeType):
    createPlot.ax1.annotate(nodeTxt, xy=parentPt,
                            xycoords="axes fraction",
                            xytext=centerPt,textcoords="axes fraction",
                            va="center",ha="center",bbox=nodeType,
                            arrowprops=arrow_args)
def createPlot():
    fig = plt.figure(1,facecolor="white")
    fig.clf()
    createPlot.ax1 = plt.subplot(111,frameon=False)
    return plotNode('a decisin node',(0.5,0.1),(0.1,0.5),decisionNode)
    return plotNode('a leaf node',(0.8,0.1),(0.3,0,8),leafNode)
    plt.show()
import treePlotter
treePlotter.createPlot()

createPlot 함수에서 return값이 두개인데 그래프를 그리면 이미지

이렇게 하나만 나와요.

뭐가 잘못된걸까요..?

  • return (plotNode('a decisin node',(0.5,0.1),(0.1,0.5),decisionNode), plotNode('a leaf node',(0.8,0.1),(0.3,0,8),leafNode)) 이렇게는 안되나요? 이준희 2020.1.9 13:13
  • return 이 한번 선언되면 메소드는 거기서 딱 끝납니다. 이준희님 의견을 참고하셔서 원하는 자료들의 '목록'을 리턴하세요. 엽토군 2020.1.9 15:30
  • 수학적으로 모든 함수는 1개의 결과만 반환합니다. 리턴값이 2개인 것은 수학적으로 함수라고 하지 않습니다. 파이썬에서 여러개가 리턴되는 것 처럼 보이는데 그것은 여러개가 리턴되는 것이 아니라 list나 tuple 같은 데이터들이 담겨 있는 하나의 컨테이너를 리턴하게 됩니다. 즉 함수라는 것은 어떠한 경우에도 1개만 리턴합니다. 정영훈 2020.1.9 17:15
  • 일반적으로 함수 정의 def에서 return은 그 문장이 발동되는 순간 함수의 실행을 거기서 끝냅니다. 따라서 위에서 하신것처럼 연달아 return을 쓰실 수 없습니다. 하나의 return에 여러개의 값을 반환하시거나, 약간 돌아가는 방법이지만 iterator의 yield 명령어를 응용하면 해결할 수 있어 보이네요 Narberral_Gamma 2020.1.24 18:28

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.