함수가 종료되기 전에 파이썬에서 함수를 반환하는 가장 좋은 방법은 무엇입니까 (예 : 검사 실패)?


164

반환 값없이 함수를 호출하는 반복을 가정 해 봅시다. 내 프로그램이 작동해야한다고 생각하는 방식은이 의사 코드에 설명되어 있습니다.

for element in some_list:
    foo(element)

def foo(element):
    do something
    if check is true:
        do more (because check was succesful)
    else:
        return None
    do much much more...

파이썬에서 이것을 구현하면 함수가 a를 반환한다고 귀찮게합니다 None. "함수 본문에서 검사에 실패한 경우 반환 값이없는 함수를 종료하는 더 좋은 방법이 있습니까?"


6
명시 적으로 무언가를 반환하지 않으면 파이썬은 항상 없음을 반환합니다. 그러나 None을 해제 할 수 있습니다.
Keith

2
검사가 무엇인지에 따라 raise예외 가 발생할 수도 있습니다 (또는 매우 드물게 함수가 True / False를 반환하도록 함)
Rosh Oxymoron

답변:


279

당신은 단순히 사용할 수 있습니다

return

정확히 같은

return None

None실행이 return명령문을 누르지 않고 함수 본문의 끝에 도달하면 함수도 리턴 됩니다 . 아무것도 반환하지 않는 것은 None파이썬에서 반환하는 것과 같습니다 .


return작동하지 않습니다. 설정 한 경우 a = method()사용하는 메소드 내에서 return여전히 코드를 계속 실행합니다. exit는 php exit ()와 같아야하며 프로그램을 즉시 중단합니다.
TomSawyer

2
@TomSawyer를 사용하여 Python 프로그램을 조기에 중지하려면 import sys먼저 sys.exit()종료 한 다음 종료를보고하지만 성공 또는를 보고하십시오 sys.exit("some error message to print to stderr").
보리스

@Boris, 이것이 내가 찾던 것이고 이것은 나를 위해 일했다.
mikey

17

내가 제안 할게:

def foo(element):
    do something
    if not check: return
    do more (because check was succesful)
    do much much more...

13

return매개 변수없이 명령문을 사용하여 함수를 종료 할 수 있습니다.

def foo(element):
    do something
    if check is true:
        do more (because check was succesful)
    else:
        return
    do much much more...

문제에 대한 정보를 얻으려면 예외를 제기하십시오.

def foo(element):
    do something
    if check is true:
        do more (because check was succesful)
    else:
        raise Exception("cause of the problem")
    do much much more...
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.