2010-01-13 4 views
1

파이썬 대화 형 인터프리터에서 :

클래스가 포함 된 모듈을 가져오고 있습니다. 다음은 그 클래스 (그들 중 일부)의 방법이 있습니다 :파이썬 : 내 함수가 인터프리터에서 반환되는 것을 표시하지 않는 이유는 무엇입니까?

def do_api_call(self, params): 
     return self.__apicall(params) 

    def __apicall(self, params): 
     return urllib2.urlopen(self.endpoint, params).read() 

내가 클래스를 가져오고 메소드 do_api_call을 (사용), 그것이 실행이 완료 아무것도 출력하지 않습니다.

def do_api_call(self, params): 
     print(self.__apicall(params)) 

    def __apicall(self, params): 
     return urllib2.urlopen(self.endpoint, params).read() 

나는 클래스의 인스턴스를 생성하고 방법을 실행하지만, 그것은되고있는 페이지의 HTML을 출력 내가 두 번째 버전을 수행 할 때

myapi = MyAPIClass() 
myapi.do_api_call(params={'param': 'value'}) 

이 (인쇄 기능에주의를) 라는.

왜 첫 번째 버전에는 아무 것도 출력되지 않습니까? 작동 중입니다 (즉, 페이지를 가져오고 오류가 발생하지 않음).

+1

당신이 묘사하는 행동은 불가능한 것 같습니다 (첫 번째 버전은 대신 그 HTML의'repr'을 표시해야합니다). 필자와 다른 사람들이 복사하여 붙여 넣기하여 (파이썬 버전, OS 버전 등의 정보) 완벽한 대화 형 세션을 제공하도록 편집하십시오 (가능하면 작지만이 동작을 재현하십시오). –

+0

그건 내가 생각한거야. 불가능한. 나는 더 많은 코드를 얻을 것이다. 가장 큰 문제는 print() 함수의 유일한 변경으로 문자 그대로 정확한 코드를 두 번 사용한다는 것입니다. – orokusaki

+0

BTW, 내 버전은 2.6 (최신 버전)이고 OS는 Windows XP입니다. – orokusaki

답변

1

첫 번째 버전은 출력으로보고 싶은 값만 반환합니다. 두 번째 버전은 실제로이 값을 인쇄합니다.

내가 당신이라면 첫 번째 버전 호출의 반환 값을 변수에 저장하고 해당 변수를 인쇄하는 것이 좋습니다. 그게 당신의 문제를 해결해야합니다

+1

인터프리터 인터프리터. 다르게 작동합니다. –

+0

아직 해결되지는 않았지만 당신의 생각이 나의 의심을 확인해주었습니다. result.read()를 메모리에 저장 한 후 결과를 인쇄 해 보았습니다. 괜찮 았는데 결과를 돌려 주려고했는데 아무 것도하지 않았다. (즉, 한 줄은 print (결과)를 나타내며 다음 줄은 print (결과 인쇄)라고 말하고 다음은 결과를 말한다. 그 결과, "결과가 인쇄 됨". 더 이상 출력되지 않았습니다. – orokusaki

관련 문제