상세 컨텐츠

본문 제목

파이썬의 매개변수 삼총사 이야기 1. 가변 매개변수

프로그래밍 언어/Python(파이썬)

by minao 2023. 1. 12. 11:28

본문

파이썬에서는 여러 가지 매개변수를 제공합니다. 여기서 '매개변수'라는 것은 영단어 parameter의 한국어 역으로, 어떤 함수가 실행되기 위해서 필요한 변수들을 말합니다. 프로그래밍 언어에서 보통 매개변수는 함수 선언부 옆 괄호에 몰아서 적는 게 일반적입니다.

 

자바에서, main이라는 이름의 함수 옆의 괄호에 문자열 배열을 갖는 매개변수를 쓸거에요 라고 선언했습니다

 

일반적인 함수에서는 함수를 선언할 때 같이 선언한 매개변수의 수와 일치하는 만큼의 값을 호출할 때에 같이 보냈지만, 파이썬에서는 그런 규칙에서 살짝 벗어난 매개변수들이 있습니다. 바로, 가변 매개변수, 기본 매개변수, 키워드 매개변수라고 하는 것들입니다.

 

1. 가변 매개변수

가변 매개변수란 '가변'이라는 말의 의미처럼 무언가가 변할 수 있는데, 그 변하는 대상은 매개변수의 '개수'입니다. 이것은 함수를 실행하기 위해서 필요한 매개변수가 0개가 될 수도 있고, 여러 개가 될 수도 있음을 의미합니다. 가변 매개변수를 선언하기 위해서는 매개변수 이름 앞에 *(asterisk)를 적어야 합니다. 가변 매개변수는 여러 개의 값을 ', '로 이어서 보낼 수 있습니다. 매개변수의 개수가 여러 개가 될 수 있다는 장점은 도리어 '어디서부터 어디까지가 이 매개변수에 해당하는지 모르겠어'라는 단점이 될 수도 있습니다. 따라서 가변 매개변수를 선언할 때에는 매개변수 목록 가장 마지막에 선언해야 합니다.

 

def function1(*arg1, arg2):
  print(arg1)
  print(arg2)

function1('뭘까요?', '어디서부터 어디까지라는 걸까요?')

위와 같이, 가변 매개변수를 앞에 놓고 함수를 만들었습니다. 그리고 2개의 인자를 주고 함수를 호출했습니다. 그랬더니 아래와 같은 오류가 발생했습니다.

 

...?

function1 함수에 보낸 모든 값이 arg1이라는 매개변수로 들어갔기 때문에 arg2는 아무것도 들어있지 않은 일반 매개변수가 되어버렸습니다. 그래서 arg2라는 매개변수에는 아무것도 없게 되어서, '매개변수 선언해 놓고 왜 아무것도 안 주세요?'라고 파이썬이 퍼졌습니다.

 

def function1(arg1, *arg2):
  print(arg1)
  print(arg2)

function1('뭘까요?', '어디서부터 어디까지라는 걸까요?')

그래서 이번에는 arg1 대신에 arg2라는 매개변수에 대고 "이 매개변수의 개수는 완전 막 바뀔겁니다"라는 의미로 *를 달아줬습니다. 이번에 실행 결과는 저번 코드와는 다릅니다.

 

arg1에 '뭘까요?'라는 값이, arg2에 '어디서부터 어디까지라는 걸까요?'라는 값이 들어갔습니다. 하지만 arg2는 여러 개의 값이 들어올 수 있기 때문에 튜플 형식인 '(, )'의 형태로 표기가 되고 있습니다.

 

def function1(arg1, *arg2):
  print(arg1)
  print(arg2)

function1('뭘까요?', '어디서부터 어디까지라는 걸까요?', '여러개를 넣으면 어떻게 될까요?', 1, 2, 3)

이번에는 보내는 값의 개수를 여러 개로 늘려보았습니다. 결과는 아래와 같습니다.

아까와 같이 '뭘까요?'는 arg1에, 그 뒤에 있는 모든 값들은 arg2에 전해져서, 각각 출력이 된 것을 알 수 있습니다.

 

이런 가변 매개변수는 파이썬 내장 함수에서도 많이 사용되고 있습니다. 계산이나 출력에 대해서 여러 개의 값이 올 수도 있는 함수들에 이것을 많이 사용했습니다. 대표적인 함수는 화면에 값을 출력하는 print() 함수입니다. print() 함수의 공식 설명을 볼까요?

맨 앞의 매개변수에 가변 매개변수를 뜻하는 *이 달려있고, 매개변수 이름도 objects로 복수로 표시해서 '여러 개가 올 수도 있음'이라는 의미를 담고 있습니다. print() 함수를 사용할 때 문자열이나 값 하나뿐만 아니라 쉼표로 이은 값의 목록을 줄 수도 있는데, 그것이 바로 저 *objects라는 매개변수에 들어가게 되는 것입니다.

 

이처럼, 파이썬에서는 불특정한 숫자의 매개변수를 가변 매개변수로 지정해서 사용할 수 있습니다. 다음에는 매개변수 삼총사의 두 번째, 기본 매개변수 이야기를 해 보겠습니다.

 

:)

관련글 더보기

댓글 영역