함수는 프로그래밍의 key concept 중 하나로 반복 사용 될 코드 블럭을 미리 정의해 프로그램에서 반복해 사용할 수 있도록 하는 concept이다. 모든 프로그래밍 언어에도 존재하는 개념으로 python에서는 def
키워드를 사용해 함수를 정의한다. 함수는 입력을 받을 수 있고, 함수 내에 작성된 코드를 수행해 입력에 따른 결과를 반환한다. 경우에 따라 입력, 출력이 없는 경우도 있다.
이번 포스팅에서는 함수를 정의하고 사용하는 방법과 variable scope의 개념에 대해 설명한다.
함수 정의 Defining Functions
아래의 add_number
함수는 두 매개변수(parameter)를 받아 두 값을 더한 결과를 반환하는 예시이다.
def add_number(x,y = 3):
return x+y
def
키워드 뒤에 따라오는 add_number
가 함수의 이름이고 괄호(( )
) 안에 매개변수를 정의한다. 그리고 이후에 4칸 들여쓰기 된 부분들이 함수의 내용이 된다. 여기에선return x+y
로 입력으로 받은 두 변수 x
, y
를 더한 값을 반환하는 동작만 수행하게된다. 여기에서 y=3
은 y의 기본값을 3으로 정의해 y값이 입력되지 않을 시에 3을 할당해 함수를 call한다.
함수 호출 Calling Function
이미 정의된 함수를 사용하는 것을 함수 호출이라고 부른다. 번역된 호출이라는 말 보다는 함수를 call한다고 표현하는 경우가 더 많은 것 같다. 함수를 call할 때는 순서에 따라 paramter를 모두 입력해주어야 한다. 이 때 실제로 전달되는 값을 argument라고 한다. 아래의 예는 add_number
의 paramter x, y에 각각 3과 4를 입력해 함수 call하는 예시이다.
result1 = add_number(3,4) # result1 = 3
result2 = add_number(3) # result2 = 6
이 때 add_number
함수에서 return된 값이 result1
과 result2
에 할당된다. result2는 y
값이 전달되지 않아 기본값인 3으로 할당되어 결과를 반환한 예시이다.
Variable scope
변수의 scope는 중요한 concept이다. varibale은 선언된 위치에 따라 생존하는 영역이 다르다. variable scope를 이해하는 첫 걸음은 global
변수와 local
변수를 구분하는 것이다. global 변수는 main 프로그램에서 선언되어 어디에서든 존재하는 변수고, local 변수는 함수 내에서 선언되고 함수 내 코드 블럭 수행이 끝난 후에는 사라진다.
아래의 a_function
은 입력되는 parameter와 출력되는 return 값이 없는 함수로 x
와 y
를 각각 print한다.
x = 10 # global variable
def a_function():
y = 5 # local variable
print(x) #global variable에 접근
print(y) #local variable에 접근
a_function()
print(x) #global variable에 접근
print(y) #local variable에 접근 불가해 오류 발생
이 예시에서 x
는 global 변수로 전체 프로그램에서 접근할 수 있지만 y
는 a_function
함수 내에서 선언된 local 변수로 함수가 call되어 실행 중에만 존재하는 변수로 함수 외부에서는 접근할 수 없는 것을 확인할 수 있다.
결론
함수는 프로그래밍을 할 때 없어서는 안될 유용한 도구로 코드를 재사용 가능한 형태로 만들 수 있다. 함수는 코드를 모듈화해 유지보수를 편리하게 하고 이해하기 쉬운 코드를 작성할 수 있게 한다. 이번 포스팅에서는 함수를 정의하고 call하는 기본적인 concept을 배웠다. 이외에 lambda function, 가변 길이 입력도 기본적인 개념으로 추가 학습을 권장한다.
함수의 개념을 마지막으로 자신만의 프로그램을 작성할 최소 지식을 갖출 수 있게 되었다.
'프로그래밍 언어 > python' 카테고리의 다른 글
[python 기초 6] python libraries (0) | 2023.03.27 |
---|---|
[python 기초 5] Class (0) | 2023.03.24 |
[python 기초 3] List, Tuple, Set, Dictionary (0) | 2023.03.06 |
[python 기초 2] 프로그램 제어 문법 (0) | 2023.03.02 |
[python 기초 1] 변수와 연산자 (2) | 2023.02.27 |