프로그래밍 언어/Python

파이썬 return vs return None vs no return at all

Rateye 2021. 12. 5. 12:30
728x90
반응형
질문 : 반환, 반환 없음 및 반환 없음?

세 가지 기능을 고려하십시오.

def my_func1():
  print "Hello World"
  return None

def my_func2():
  print "Hello World"
  return

def my_func3():
  print "Hello World"

그들은 모두 None을 반환하는 것처럼 보입니다. 이 함수의 반환 값이 작동하는 방식에 차이가 있습니까? 하나를 선호하는 이유가 있습니까?

답변

실제 행동에는 차이가 없습니다. 그들은 모두 None 반환하고 그게 다입니다. 그러나이 모든 것을위한 시간과 장소가 있습니다. 다음 지침은 기본적으로 다른 방법을 사용하는 방법 (또는 최소한 내가 배운 방법을 사용해야 함)이지만 절대적인 규칙은 아니므로 필요하다고 생각되면 혼합 할 수 있습니다.

return None 사용

이것은 함수가 실제로 나중에 사용하기 위해 값을 반환한다는 것을 의미하며,이 경우 None 을 반환합니다. 이 값 None 은 다른 곳에서 사용할 수 있습니다. 함수에서 다른 가능한 반환 값이 없으면 return None

다음 예제에서, 우리는 반환 personmother 경우 person 주어진 인간이다. 인간이 아니라면, 그 person mother 가 없기 None 을 반환합니다 (동물이나 무언가가 아니라고 가정합시다).

def get_mother(person):
    if is_human(person):
        return person.mother
    else:
        return None

 

return 사용

break in loops와 같은 이유로 사용됩니다. 반환 값은 중요하지 않으며 전체 함수를 종료하기 만하면됩니다. 자주 필요하지 않더라도 일부 장소에서는 매우 유용합니다.

15 prisoners 있고 그들 중 한 명이 칼을 가지고 있다는 것을 알고 있습니다. 우리는 각 prisoner 하나씩 살펴보고 칼이 있는지 확인합니다. prisoners 확인할 이유가 없다는 것을 알기 때문에 기능을 종료 할 수 있습니다. prisoner 를 찾지 못하면 경고를 보냅니다. 이것은 다양한 방법으로 수행 될 수 있으며 return 사용하는 것이 가장 좋은 방법은 아닐 수도 있지만 함수를 종료 return

def find_prisoner_with_knife(prisoners):
    for prisoner in prisoners:
        if "knife" in prisoner.items:
            prisoner.move_to_inquisition()
            return # no need to check rest of the prisoners nor raise an alert
    raise_alert()

참고 : 반환 값이 잡히지 않기 때문에 var = find_prisoner_with_knife() 수행해서는 안됩니다.

no return at all 사용

이것은 또한 None 을 반환하지만 그 값은 사용되거나 잡히지 않습니다. 단순히 기능이 성공적으로 종료되었음을 의미합니다. 기본적으로 C ++ 또는 Java와 같은 언어의 void return 하는 것과 같습니다.

다음 예제에서는 사람의 어머니 이름을 설정하고 성공적으로 완료 한 후 기능이 종료됩니다.

def set_mother(person, mother):
    if is_human(person):
        person.mother = mother

참고 : 반환 값이 잡히지 않기 때문에 var = set_mother(my_person, my_mother) 수행해서는 안됩니다.

출처 : https://stackoverflow.com/questions/15300550/return-return-none-and-no-return-at-all
728x90
반응형