문법/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() -> 이렇게 해줘야 된다.