2012-06-09 2 views
1

나는 함수가 어떻게 작동하는지, 어떻게 변수에 할당 할 수 있는지 잘 알고 있었다. 그러나 몇 달 전 (특히 운동 21) 가장 많이 읽은 Hard Python Learn Python을 살펴보고 통역사의 결과에 대해 흥미로운 점을 발견했습니다.출력 : 함수 대 변수에 할당 된 함수

def add(a, b): 
    print "ADDING %d + %d" % (a, b) 
    return a + b 

출력 :

>>> add(30, 5) 
ADDING 30 + 5 
35 

이유는이 쇼 (35)는 무엇입니까? 리턴 값을 표시하기 위해 "print add (30, 5)"를 써야하지 않습니까? 이 함수를 호출하고 인쇄 문이 아닌 반환 값을 출력 ...하지만 변수 자체가 값 35, 왜 변수 할당은 동일한 작업을 수행하지 않습니다 보여줍니다처럼

>>> age = add(30, 5) 
ADDING 30 + 5 

>>> age 
35 

변수 할당이 보인다?

이 질문이 의미가 있기를 바랍니다. 나는 뒤에서 무슨 일이 벌어지고 있는지 더 잘 이해하려고 노력하고있다. 누군가 외부에서 읽는다면, 알려주세요! print "ADDING %d + %d" % (a, b) 및 정수 (에만 정수)를 참조 반환 :

답변

5

대화식 인터프리터가 입력 한 표현식의 반환 값을 표시하기 때문입니다.

게시 한 기능에는 두 줄이 있습니다. 첫 번째 줄에서는 표준 출력에 대한 값이 print()입니다. 두 번째 return은 함수에서 동일한 값을가집니다. 앞에서 언급했듯이 이것은 또한 대화 형 인터프리터의 표준 출력에 기록됩니다.

대화 형 인터프리터 즉 하지 명령 행 (을 통해 스크립트를 실행한다면 :.

python myscript.py 

당신이 반환 값이 더 이상 표준 출력에 인쇄되는 것을 알 수 없을 것이다

+0

아, 의미가 있습니다. – bmay2

0

추가 모두 인쇄 볼 그것은 항상 인쇄 "추가 X + Y는"원하는 여부 return a + b

합니다. 당신이 변수에 기능을 할당하면

, 그것은 VAR, 다음 VAR를 (반환을 추가 할 것입니다 ) 정수 아무것도 더있을 것이다 CAL 수 있습니다.

1

대화 형 파이썬 프롬프트에서이 작업을 수행하고 있습니다. 사용자의 편의를 위해 요청하지 않고 마지막 결과를 항상 인쇄합니다. 그렇지 않으면 항상 print을 입력해야합니다. 빠르게.

적절한 스크립트에서 파이썬은 그렇게하지 않습니다.

+2

인터프리터는 입력 된 마지막 값뿐만 아니라 'None'으로 평가되지 않는 _all_ 식의 반환 값을 출력하기 때문에 "최종 결과를 출력합니다"라고 약간의 오해의 소지가 있습니다. 예를 들어, 범위 (10)의 i에 대해'>>> : \ n ... i + 10 \ n ... i + 5 \ n'. –

+1

와우, 정말?나는 결코 그것을 시도하지 않았다. 새로운 것을 배웠습니다! – kindall