2009-06-24 4 views
3

파이썬 셸로 돌아가는 개체를 인쇄하지 못하도록하고 싶습니다. 나는 다음과 같은 경우 지금반환하는 인쇄 개체에서 파이썬 반환 문을 사용하지 않음

def func1(): 
    list = [1,2,3,4,5] 
    print list 
    return list 

, :

python -i test.py 
>>>func1() 

이 항상 나에게 파이썬 쉘에 두 지문을 제공

는 예컨대 샘플 파이썬 스크립트 test.py는 것 같습니다. 그냥 인쇄하고 반환 된 객체를 가져 오려고합니다.

답변

6

파이썬 셸을 구성하여 함수 호출의 반환 값을 출력하지 않도록 설정할 방법이 없습니다. 그러나 반환 된 값을 변수에 할당하면 인쇄되지 않습니다. 예를 들어, 당신은

rv = func1() 

대신 다음 아무것도 인쇄되지 얻을 것이다

func1() 

말한다.

10

인쇄 이유는 return 문이 아니라 쉘 자체입니다. 쉘은 조작의 결과 인 오브젝트를 명령 행에 인쇄합니다.

는 이유 그게 전부이 발생합니다 (그것이 무엇이든 다른 사람에 할당되지 않기 때문에)

>>> a = 'hallo' 
>>> a 
'hallo' 

마지막 문이 결과로의 값을 가진다. 그래서 그것은 쉘에 의해 인쇄됩니다.

문제는 "반환"이 아니라 쉘 자체입니다. 그러나 이것은 문제가되지 않습니다. 왜냐하면 작업 코드 normaly는 대화 형 셸에서 실행되지 않기 때문에 (따라서 아무 것도 인쇄되지 않습니다). 따라서 문제 없습니다.

+0

1 : 파이썬 혼란 대 "쉘"을 스트레이트를 –

5

일반적으로 함수 내에서 인쇄 한 다음 값을 반환하는 것은 좋은 생각이 아닙니다.

사실 함수 내에서의 인쇄는 종종 잘못된 것입니다. 대부분의 경우 함수는 프로그램에서 여러 번 호출됩니다. 때로는 값을 인쇄하고 싶을 때가 있습니다. 가장 자주 데이터를 사용하기를 원합니다.

함수가 값을 반환하도록하십시오. 이 함수를 호출 한 코드가 그것을 인쇄한다면, 그것이 올바른 일이라면.

0

당신이 값을 표시하지 않는 경우, 변수에 함수 결과에 할당 :

H:\test>copy con test.py 
def func1(): 
    list = [1,2,3,4,5] 
    print list 
    return list 
^Z 
     1 file(s) copied. 

H:\test>python -i test.py 
>>> func1() 
[1, 2, 3, 4, 5] 
[1, 2, 3, 4, 5] 
>>> x = func1() # assign result to a variable to suppress auto printout 
[1, 2, 3, 4, 5] 
>>> 
관련 문제