문법/Python

Python None 리턴하는 경우

jungmin.park 2023. 10. 25. 17:36
  • dfs 문제를 풀다가 값을 넘기려고 하는 것들은 print로 찍어보면 값이 잘나오고 있었지만 마지막 반환된 결과값을 확인하면 None 가 나오고 있었다.

1) 종료조건에서만 반환을 해주면 되었나

  • 마지막 결과값을 종료조건에 반환해주면 되었나 생각했지만 아니였다.
  • 종료조건에 반환이 되면 전 단계로 돌아가는데 이 때 return 값이 없다!
  • return 문이 없으면 None을 반환하게 된다.
def dfs():

	if 재귀 종료 조건:
    	return cnt
        
     dfs()

결국 이 함수에서는 cnt가 종료조건에 반환이 되었다고 하더라도 전 단계에서 반환해주는 값이 없어 None 값을 반환한다.

cnt -> None -> None 을 반환하며 돌아가는 것

 

2) return None 을 사용해야 될 때

~가 아닌 경우이다. 다음과 같은 예시를 들어보자

목적으로 하는 대상이 아닌경우에는 명시적으로 None 값을 리턴해줘야한다.

TESTS = {"test1", "test2"}


def get_test(test):
    if test in TESTS:
        return test
    return None


if __name__ == "__main__":
    if get_test("test1") is not None:
        print("테스트 입니다.")
    else:
        print("None입니다. ")

 

3) return을 사용할때

early return의 경우 많이 사용한다. 맥락 상 break와 유사한 효과를 내기 때문에, 무언가를 리턴하기 보다는 실행 중단의 의미가 더 크다.

 

4) return을 사용하지 않을 때

함수가 무언가를 반환하는게 목적이 아닌, 단순 연산의 목적일 경우이다.

연산이 끝난 후 연산 성공이나 실패를 반환해야 한다면 달라지겠지만, 그게 아니라 단순히 글로벌 변수를 연산이 목적이라면, 사용하지 않는 경우가 있다.

 

3) 결론

def dfs():

	if 재귀 종료 조건:
    		return cnt
            
    return dfs() -> 이렇게 해줘야 된다.

출처 https://velog.io/@munang/%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC-Python-None-%EB%A6%AC%ED%84%B4%ED%95%98%EB%8A%94-%EA%B2%BD%EC%9A%B0-%EC%9E%AC%EA%B7%80%ED%95%A8%EC%88%98-None-%EB%A6%AC%ED%84%B4