강의로 돌아가기
-

화면에 출력되는 부분에 대한 질문

안녕하세요 프로그래밍을 처음 공부하고있는데요

강의를 듣는 도중에 궁금증을 해결하지 못하고 이렇게 질문을 남깁니다!

def return_false():
    print("함수return_false")
    return False

def return_true():
    print("함수return_true")
    return True

print("테스트1")
a = return_false()
b = return_true()
if a and b:
    print(True)
else:
    print(False)

print("테스트2")
if return_false() and return_true():
    print("True")
else:
    print(False)

강의중에 제가 이해한 부분을 설명드리면
위의 코드를 윈도우즈파워쉘에서 실행시키면

테스트1에서
함수를 변수에 할당하는 부분
테스트1이 출력되고
a = return_false()
b = return_true() 이 출력되고 그 이후에
if 문에서 False가 출력됩니다.

테스트2에서는
테스트2가 출력되고
함수return_False가 출력이 되고 난 후에
if문에서 False가 출력됩니다.

제가 잘 이해가 되지 않는 부분은

  1. 왜 함수를 변수에 할당한 것 만으로도 화면에 출력이 되는지와
  2. 테스트2의 경우 함수return_false는 위의 코드의 어느부분 때문에 출력되는건지

이렇게 2가지가 궁금합니다.

제가 이 코드에 대해서 어떻게 생각하고 있는지도 추가적으로 더 설명 드리면

  1. 질문1번의 경우 return_false() 를 코드에 추가하거나 혹은 함수를 할당한 a를 다시 불러내야만 화면에 출력할 수 있을거라고 생각하고 있었지만 실제로는 그렇지 않아서
    변수에 함수를 할당하는 코드[a = return_false()] 자체가 그 할당한 함수 자체를 다시한번 자동으로 실행시키는 것 인지가 궁금합니다.

  2. 질문2번의 경우 출력된 함수return_false 어떤 코드 때문에 화면에 출력되는 건지 모르겠습니다. 제 생각으로는 테스트2가 출력된 이후에 if문에 의해서 False가 출력되어야 한다고 생각했는데 함수return_false가 출력되어서 왜 그런지를 모르겠습니다.

코드를 다시 잘 살펴봐도 모르겠네요... ㅠ

제가 설명이 잘 됬는지 모르겠지만.... 고수님들의 답변을 기다리겠습니다.

감사합니다

1 개의 답변
Demi

1번에 대한 답변입니다.

a = return_false()를 a에 return_false함수 자체를 할당하는 것으로 해석하신것 같습니다.
실제론 a에 return_false가 리턴한 값, 즉 함수의 마지막 부분인 return False의 False가 a에 저장됩니다.

a에 함수 자체를 할당하려면 a = return_false와 같이 사용합니다. 이 경우 괄호가 없다는 점이 보이시나요. :)

2번에 대한 답변입니다.

1번 답변과 이어집니다.
if return_false() and return_true():함수 `return_false()`가 리턴한 값과 함수 `return_true()`가 리턴한 값이 모두 True이면이라는 뜻입니다.
그런데 return_false()함수는 무조건 False를 리턴하므로 당연히 이 if문은 실행되지 않고, else문이 실행됩니다.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.