Python 함수의 매개변수, 인수, 키워드 인수, 가변 인수
파이썬 함수. 우리가 아는 그 함수다.
자주 사용되는 코드를 함수로 작성해놓으면 프로그램을 작성하기 훨씬 수월해진다.
소프트웨어 생산성이 높아진다고도 표현한다.
어쨌거나, 함수에 대한 내용 전체를 쓰진 않을거고, 내가 헷갈렸던 개념들을 몇 가지 적어보고자 한다.
파이썬으로 작성된 다음 코드를 보자.
def Func(r): # 매개변수 r
...
a = 4
Func(7) # 인수 7
Func(a) # 인수 a
매개변수
Func(r)에서 r 은 매개변수라 한다. 함수를 호출할 때 전달되는 값(인수)이 여기에 복사되어 전달된다.
인수
Func(7), Func(a) 등 함수를 호출하는 코드에서 7, a는 함수에 전달하는 인수라 부르며,
함수 선언부의 매개변수에 인수의 값이 복사되어 전달된다.
키워드 인수
파이썬에서는 함수 호출 시 매개변수를 지정해서 인수를 전달할 수 있는데, 이 때 전달하는 인수를 키워드 인수라 한다.
키워드 인수를 사용하는 예시는 다음과 같다.
def Func(a, b) :
print("a=%d, b=%d" % (a,b))
Func(b=4, a=3)
이 코드의 실행 결과는 다음과 같다.
a=3, b=4
Func에는 매개변수가 a, b순서대로 선언되어 있지만,
Func 호출문에서 함수의 매개변수를 지정하여 순서에 상관없이 값을 전달하고 있다.
나름 편리한 기능 같지만, 그리 자주 쓰이진 않는다.
프로그램의 크기가 커질수록 함수의 선언부를 일일이 확인해가며 호출하기가 쉽지 않기 때문이다.
가변 인수
마지막으로 파이썬 함수의 가변 인수다.
함수에 전달되는 인수의 개수를 미리 알 수 없을 때 유용한 기능이다.
사용 예시는 다음과 같다.
def Func(*args):
...
Func(1,2)
Func('a', 'b', 4, 3.14)
예시와 같이 가변 인수를 사용하면 같은 Func 함수에 서로 다른 개수의 인수를 전달할 수 있다.
전달된 인수들은 함수에 튜플 형태로 전달되며, 함수 내에서 자유롭게 사용 가능하다.
가변 인수는 생각보다 다양한 곳에 쓰인다. 대표적인 예시로 리눅스 명령어가 있다.
우리가 리눅스에서 "ls -al"이라는 명령어를 입력하면, 리눅스 내부에 작성되어 있는 "ls" 프로그램에
인자로 '-', 'a', 'l'을 전달하여 실행하는 방식이다.
자바나 C++도 같은 기능을 지원하기 때문에 알아두면 좋은 기능이다.