본문 바로가기
초보자를 위한 Python/5. Python 함수

5.2 파이썬 함수 예제 : 호출, 들여쓰기, 인수 및 반환 값

by 엔터티 2022. 7. 12.
반응형

파이썬에서 함수란?

Python 의 함수는 참조될 때 실행되는 코드 조각입니다. 프로그램의 여러 위치에서 코드를 활용하는 데 사용됩니다. 방법 또는 절차라고도 합니다. Python은 print(), input(), compile(), exec() 등과 같은 많은 내장 함수를 제공하지만 또한 자신만의 함수를 만들 수 있는 자유도 제공합니다.

목차

    파이썬에서 함수를 정의하고 호출하는 방법

    반응형

    파이썬에서 함수는 함수 이름과 괄호(())가 뒤에 오는 "def" 문으로 정의됩니다.

    def func1():" 명령을 사용하여 함수를 정의하고 함수를 호출해 보겠습니다. 

    함수의 출력은 "I am learning Python function"입니다.

    ## 함수를 정의
    def func1():
        print("I am learning Python function")
    
    ## 함수 호출
    func1()

    파이썬 함수 정의와 실행

    파이썬에는 함수를 정의하는 일련의 규칙

    • 모든 인수 또는 입력 매개변수는 이 괄호 안에 넣어야 합니다.
    • 함수 첫 번째 명령문은 선택적 명령문일 수 있습니다. docstring 또는 함수의 문서 문자열
    • 모든 함수의 코드는 콜론(:)으로 시작하고 들여쓰기(공백)해야 합니다.
    • return(expression) 문은 함수를 종료하고 선택적으로 호출자에게 값을 다시 전달합니다. 인수가 없는 return 문은 return None과 동일합니다.

    Python에서 들여쓰기(공백)의 중요성

    Python 함수에 익숙해지기 전에 Python 함수를 선언하기 위한 들여쓰기 규칙을 이해하는 것이 중요하며 이러한 규칙은 조건, 루프 또는 변수 선언과 같이 Python의 다른 요소에도 적용할 수 있습니다.

    Python은 특정 스타일의 들여쓰기를 따라 코드를 정의합니다. Python 함수는 함수의 시작과 중지를 나타내는 중괄호처럼 명시적인 시작이나 끝이 없기 때문에 이 들여쓰기에 의존해야 합니다 . 여기에서는 "print" 명령을 사용하여 간단한 예를 들어보겠습니다. def func 1() 바로 아래에 "print" 함수를 작성하면 " indentation error: expected indented block "이 표시됩니다.

    이제 "print" 함수 앞에 들여쓰기(공백)를 추가하면 예상대로 인쇄되어야 합니다.

    파이썬 들여쓰기

    최소한 한 번의 들여쓰기만으로도 코드가 성공적으로 작동합니다. 그러나 가장 좋은 방법은 함수를 호출하기 위해 3-4개 정도 들여쓰기(스페이스)를 하는 것 입니다. 

    (저 같은 경우는 Tab 을 사용합니다.)

    들여쓰기를 선언하는 동안 코드의 나머지 부분에 대해서도 동일한 들여쓰기를 유지해야 합니다 . 예를 들어 아래 스크린샷에서 다른 문을 "still in func1"이라고 호출하고 첫 번째 인쇄 문 바로 아래에 선언되지 않은 경우 들여쓰기 오류가 표시됩니다. "unindent is not match other indentation level."

    파이썬 들여쓰기 레벨

    이제 두 명령문에 동일한 들여쓰기를 적용하고 동일한 줄에 정렬하면 예상되는 출력이 나옵니다.

    파이썬 들여쓰기 방법

    함수 반환 값(Return Value)은 어떻게 되나요?

    Python의 Return 명령은 함수 호출자에게 반환할 값(return value)을 지정합니다.

    다음 예를 통해 이것을 이해합시다.

    1단계) 여기 - 함수가 "return"이 아닌 경우를 봅니다. 예를 들어, 우리는 4의 제곱을 원하고 코드가 실행될 때 "16"으로 답해야 합니다. 단순히 "print x*x" 코드를 사용할 때 제공되지만 "print square" 기능을 호출하면 출력으로 "None"이 제공됩니다. 함수를 호출할 때 재귀가 발생하지 않고 함수의 끝에서 떨어지기 때문입니다. Python은 함수 끝에서 실패하면 "None"을 반환합니다.

    "return"을 하지 않을 경우

    2단계) 이를 명확하게 하기 위해 인쇄 명령을 할당 명령으로 바꿉니다. 출력을 확인해보자.

    "print(square (4))" 명령을 실행하면 여기에서 실행할 특정 함수가 없기 때문에 실제로 개체의 값을 반환합니다. "None"을 반환합니다.

     

    3단계) 이제 "return" 명령을 사용하여 출력해 보겠습니다. "return"기능을 사용하면 "16"이라는 정확한 값이 출력 됩니다.

    4단계) 파이썬의 함수는 그 자체로 객체이며 객체에는 어떤 값이 있습니다.

    여기서 우리는 파이썬이 객체를 어떻게 취급하는지 볼 것입니다. "print (square)"명령을 싱행하면 개체의 값이 반환 됩니다. 인수를 전달하지 않았기 때무에 여기에서 실행할 특정 함수가 없으므로 개체의 위치인 기본값(0x000001F062AAFCA8)을 반환합니다. 실제 파이썬 프로그램에서는 아마도 이것이 필요하진 않을 것 입니다.

     

    함수의 인수

    인수는 호출될 때 함수에 전달되는 값입니다.
    즉, 호출 측에서는 인수이고 함수 측에서는 매개변수입니다.

    1단계) 함수 정의에서 인수를 선언 합니다. 함수를 호출하는 동안 아래와 같이 해당 인수에 대한 값을 전달 할 수 있습니다.

    2단계) 인수의 기본값을 선언하려면 함수 정의에서 값을 할당 합니다.

    예> x 에는 기본값이 없습니다. y의 기본값은 0 입니다. 곱하기 함수를 호출하는 동안 하나의 인수만을 제공하면 파이썬은 y=0값을 유지하면서 제공된 값을 x에 할당합니다. 따라서 x*y = 0

    3단계) 이번에는 기본값 y=0 대신 y=2로 값을 변경하면 결과값은 (4X2)=8로 반환 됩니다.

    4단계) 파이선에서 인수를 전달할 수 있는 순서를 등록할수 있습니다. 여기서 x와 y의 값의 순서를 x=4, y=2로 반대 순서로 입력 했습니다.

    5단계) 여러 인수를 배열로 전달도 가능합니다. 아래의 예제에서 (*args)함수를 호출하여 다중 인수(1,2,3,4,5)를 호출 합니다.

    예> (*args)함수를 호출할 때 여러개의 인수를 숫자(1,2,3,4,5)로 선언 하고, 인수값을 출력합니다.

     

    Tip!!

    • 파이썬 2.7에서. 함수 오버로딩 은 Python에서 지원되지 않습니다. 함수 오버로딩은 구현이 다른 동일한 이름의 여러 메서드를 만드는 기능입니다. 함수 오버로딩은 Python 3에서 완전히 지원됩니다.
    • 메소드와 기능 사이에는 상당한 혼란이 있습니다. 파이썬의 메소드는 객체 인스턴스와 연관되지만 함수는 그렇지 않습니다. Python이 메서드를 호출할 때 해당 호출의 첫 번째 매개변수를 적절한 객체 참조에 바인딩합니다. 간단히 말해서 Python에서 독립 실행형 함수는 "함수"인 반면 클래스 또는 인스턴스의 속성인 함수는 "메서드"입니다.

    Python 3 코드

    #define a function
    def func1():
       print ("I am learning Python function")
       print ("still in func1")
       
    func1()
    
    def square(x):
      	return x*x
    print(square(4))
    
    def multiply(x,y=0):
    	print("value of x=",x)
    	print("value of y=",y)
        
    	return x*y
      
    print(multiply(y=2,x=4))

    Python 2 코드

    #define a function
    def func1():
       print " I am learning Python function"
       print " still in func1"
       
    func1()
    
    def square(x):
      	return x*x
    print square(4)
    
    def multiply(x,y=0):
    	print"value of x=",x
    	print"value of y=",y
        
    	return x*y
      
    print multiply(y=2,x=4)

    요약

    Python의 함수는 단일 관련 작업을 수행하는 데 사용되는 재사용 가능한 코드입니다.

    • def 문 에 의해 정의된 함수
    • 모든 함수 내의 코드 블록은 콜론(:)으로 시작하고 들여쓰기(공백)해야 합니다.
    • 모든 인수 또는 입력 매개변수는 이러한 괄호 안에 넣어야 합니다.
    • 함수를 선언한 후 코드 앞에 적어도 하나의 들여쓰기를 남겨야 합니다.
    • def 함수 내의 코드 전체에서 동일한 들여쓰기 스타일을 유지해야 합니다.
    • 모범 사례의 경우 문 앞에 서너 개의 들여쓰기가 가장 좋은 것으로 간주됩니다. (저의 경우 4칸짜리 탭을 사용합니다.)
    • "return" 명령을 사용하여 함수 호출에 값을 반환할 수 있습니다.
    • 인수가 호출 함수에 제공되지 않으면 Python은 (0x000001F062AAFCA8)과 같은 임의의 값을 인쇄합니다. "인쇄 기능"의 예.
    • 호출 측에서는 인수이고 함수 측에서는 매개변수입니다.
    • 인수의 기본값 – 곱하기 함수 또는 다른 함수를 호출하는 동안 하나의 인수만 제공하면 Python은 기본적으로 다른 인수를 할당합니다.
    • Python을 사용하면 인수의 순서도 바꿀 수 있습니다.
    반응형

    댓글