본문 바로가기

programming language/python

python - function (in PY4E)

함수(function)는 컴퓨터 프로그래밍에서 아주 중요한 개념이다. 우리가 코드를 짜다 보면 같은 내용의 코드가 반복되어 나타나게 되는데 이를 해결해 줄 수 있는 것이 함수이다. 함수는 정의 하여 사용 할 수 있는데 한번 정의하면 계속해서 호출해서 사용할 수 있어 같은 코드를 수정해야 할때 효율적이다.

 

함수는 인자, 매개변수, 반환값으로 구성되어있다.

 

숫자를 더해주는 함수를 정의하고 호출한 코드이다..

def add(x, y):
    z = x + y
    return z
print(add(3, 5))
--------------------
8

함수 정의 시에는 def 함수이름(매개변수) : 식으로 정의하고 return 값을 반환한다. 호출 시에는 함수이름(인자)로 호출한다. 

 

인자는 함수 호출 시에 입력값으로 전달하는 값으로 자료를 전달하여 원하는 값을 함수에서 받을 수 있다.

ex) add(3, 5)   # add 함수로부터 'hello world'라는 자료(인자)를 전달하고 있다. 

 

매개변수는 함수 정의 시에 작성하고 인자를 받는 통로나 손잡이라고 생각하면 쉽다. 

ex) def add (x, y) : # add(x, y)함수에서 x, y가 값을 전달받는 매개 변수이다.

 

반환값은 호출된 함수에서 최종적으로 값을 반환하는 값으로 return 키워드를 사용해 지정할 수 있다. 반환값을 지정해 주지 않으면 함수 호출을 하여도 값이 전달되지 않으므로 예기치 못한 오류가 일어날 수 있다.

ex) return z # add(3, 5)를 호출 할 경우 8이라는 숫자를 반환한다.

 

재귀함수를 써야되는 경우가 있었는데 재귀함수에서 값을 반환하지 않아서 오류가 났었다. 그 예제이다.

#아직수정해야함 시간 잘못 입력후 다시 시간을 물어보게 하고 싶은데 구현하기 어려움이 있음
def numhours() :
    try :
        hours = float(input('Enter Hours: '))
        return hours
    except :
        print('Error, please enter numeric input')
        return numhours() #-------해결! 함수는 리턴값을 반환해야만 값을 반환할 수 있음 결국 첫번째 함수에서 두번째함수가
                          # 호출되면 그값을 두번째 함수에서 반환 그이후 첫번째 함수로가게 되는데 이후 두번쨰함수에서 받은 값을 반환받아야 한다

def numrate() :
    try :
        rate = float(input('Enter Rate: '))
        return rate
    except :
        print('Error, please enter numeric input')
        return numrate()

h = numhours()
print(h)
r = numrate()

즉 첫번째 numhours()함수 호출 이후 except구문으로 가면 numhours()를 다시 호출하여 다시 물어보게 한 뒤 hours의 값을 반환하려고 하였는데 두번째호출된 numhours()함수에서 hours의 값을 반환하면 다시 except구문으로 가기 때문에 그값을 다시 한번 더 반환해 주어야 한다는 것을 알게되었다. 결론: 함수는 반환을 잘 해주어야한다는 것을 알게되었다.

'programming language > python' 카테고리의 다른 글

Python - collections  (0) 2022.08.18
python - 문자열  (0) 2022.08.04
python - PEP8  (0) 2022.07.24