복붙노트

[PYTHON] 파이썬 def 함수 : 함수의 끝을 어떻게 지정합니까?

PYTHON

파이썬 def 함수 : 함수의 끝을 어떻게 지정합니까?

파이썬을 배우는 중이고 함수의 "def"가 끝나면 혼란 스럽습니다.

나는 다음과 같은 코드 샘플을 본다.

def myfunc(a=4,b=6):
    sum = a + b
    return sum

myfunc()

반환으로 인해 끝나지 않는다는 것을 안다. if 문을 보았 기 때문에 ... FOO라면 BAR을 반환하고, 그렇지 않으면 FOOBAR를 반환한다. 파이썬은 이것이 자신을 호출하는 재귀 함수가 아니라는 것을 어떻게 알 수 있습니까? 함수가 실행될 때 반환을 찾을 때까지 계속 프로그램을 계속 진행합니까? 그것은 몇 가지 흥미로운 오류로 이어질 것입니다.

감사

해결법

  1. ==============================

    1.파이썬에서 공백이 중요합니다. 들여 쓰기가 작아지면 함수는 끝납니다.

    파이썬에서 공백이 중요합니다. 들여 쓰기가 작아지면 함수는 끝납니다.

    def f():
        pass # first line
        pass # second line
    pass # <-- less indentation, not part of function f.
    

    한 줄 함수는 한 줄에 들여 쓰기없이 작성할 수 있습니다.

    def f(): pass
    

    그리고 나서 세미콜론을 사용하지만 권장하지는 않습니다.

    def f(): pass; pass
    

    위의 세 가지 형식은 함수의 끝이 구문 적으로 정의되는 방법을 보여줍니다. 시맨틱에 관해서는, 파이썬에서는 함수를 종료하는 세 가지 방법이 있습니다.

  2. ==============================

    2.파이썬은 들여 쓰기와 관련하여 공백에 민감합니다. 들여 쓰기 레벨이 함수가 정의 된 레벨로 되돌아 가면 함수가 종료됩니다.

    파이썬은 들여 쓰기와 관련하여 공백에 민감합니다. 들여 쓰기 레벨이 함수가 정의 된 레벨로 되돌아 가면 함수가 종료됩니다.

  3. ==============================

    3.정확하게 말하면, 블럭은 시작과 거의 같은 레벨로 들여 쓰기 된 비어 있지 않은 라인을 만날 때 끝난다. 이 비어 있지 않은 라인은 해당 블록의 일부가 아닙니다. 예를 들어 다음 인쇄는 동시에 두 개의 블록을 종료합니다.

    정확하게 말하면, 블럭은 시작과 거의 같은 레벨로 들여 쓰기 된 비어 있지 않은 라인을 만날 때 끝난다. 이 비어 있지 않은 라인은 해당 블록의 일부가 아닙니다. 예를 들어 다음 인쇄는 동시에 두 개의 블록을 종료합니다.

    def foo():
        if bar:
            print "bar"
    
    print "baz" # ends the if and foo at the same time
    

    들여 쓰기 레벨은 def와 if보다 작거나 같기 때문에 양쪽 모두를 끝냅니다.

    들여 쓰기와 상관없이 문장이없는 라인은 중요하지 않습니다.

    def foo():
        print "The line below has no indentation"
    
        print "Still part of foo"
    

    그러나 블록의 끝을 나타내는 문구는 기존의 들여 쓰기와 같은 수준으로 들여 쓰기되어야합니다. 그렇다면 다음은 오류입니다.

    def foo():
        print "Still correct"
       print "Error because there is no block at this indentation"
    

    일반적으로, 중괄호로 쓰는 경우에는 코드를 들여 쓰기 만하면 괜찮을 것입니다.

    BTW, 들여 쓰기의 "표준"방법은 공백으로 만 가능하지만 물론 탭이 가능하지만 둘 다 혼합하지 마십시오.

  4. ==============================

    4.흥미롭게도, 파이썬 인터프리터 인터프리터에서 타이핑을한다면 빈 줄을 사용하여 함수를 따라야한다. 작동하지 않습니다.

    흥미롭게도, 파이썬 인터프리터 인터프리터에서 타이핑을한다면 빈 줄을 사용하여 함수를 따라야한다. 작동하지 않습니다.

    def foo(x):
      return x+1
    print "last"
    

    그것은 파일에서 완벽하게 합법적 인 파이썬 구문입니다. 통역사에게 타이핑 할 때 다른 통사론적인 차이점이 있으므로 조심하십시오.

  5. ==============================

    5.공백이 중요합니다. 블록이 완료되면 함수 정의가 완료됩니다.

    공백이 중요합니다. 블록이 완료되면 함수 정의가 완료됩니다.

    함수가 실행되면 끝날 때까지 또는 return 또는 yield 문이 발생할 때까지 계속 진행됩니다. 함수가 return 또는 yield 문을 만나지 않고 완료되면 아무 것도 암시 적으로 반환됩니다.

    튜토리얼에 더 많은 정보가 있습니다.

  6. ==============================

    6.들여 쓰기를 사용합니다.

    들여 쓰기를 사용합니다.

     def func():
         funcbody
         if cond: 
             ifbody
         outofif
    
     outof_func 
    
  7. ==============================

    7.그래서 그 들여 쓰기가 중요합니다. 여기에 다른 사용자가 지적했듯이 들여 쓰기 수준이 def 함수 선언과 같은 시점에있을 때 함수가 종료되었습니다. 파이썬에서는 탭과 스페이스를 섞을 수 없다는 것을 명심하십시오. 대부분의 편집자가이를 지원합니다.

    그래서 그 들여 쓰기가 중요합니다. 여기에 다른 사용자가 지적했듯이 들여 쓰기 수준이 def 함수 선언과 같은 시점에있을 때 함수가 종료되었습니다. 파이썬에서는 탭과 스페이스를 섞을 수 없다는 것을 명심하십시오. 대부분의 편집자가이를 지원합니다.

  8. from https://stackoverflow.com/questions/1573548/python-def-function-how-do-you-specify-the-end-of-the-function by cc-by-sa and MIT license