Function Parameters

이산·2022년 3월 6일
0

기술블로그

목록 보기
7/42

Parameter

def 함수 이름(매개변수1, 매개변수2)
실행 구문
return 반환값태

  • 함수를 실행할 때 위와 같은 형태로 실행하며 매개변수를 Parameter라고 부른다.

Default value parameter VS Non-default value parameter

def hello(your_name, my_name="이산"):
  print(f"Hello, {your_name}. I'm {my_name}.")
  • my_name="이산"과 같이 변수 값이 정의되었을 경우 Default value parameter이라고 부른다.
  • 반대로 your_name과 같이 값이 선언되지 않은 변수는 Non default value parameter이라고 한다.

Function arguments

파이썬 함수를 정의할 때 사용하는 인자는 Positional, Arbitrary, Keyword 3종류로 나뉜다. 이들은 서로 판단의 우선순위가 존재하며, 엄격한 순서에 의해서만 선언되고 사용될 수 있다. Positional, Arbitrary, Keyword 순으로 우선순위를 가지며 함수는 이 순서를 토대로 인자를 받아서 처리한다.

1. Position arguments

def hello(a, b):
  pass

hello(1)

  • 위의 코드를 실행시켰을 경우 다음과 같이 에러가 발생한다. Position argument는 필수적으로 값을 요구하는 특성이 있기 때문에 동일한 수의 인자를 필수적으로 전달해 주어야 한다. 선언된 위치에 따라 순서대로 인자값이 배정된다는 특징도 있다.

2. Variable length arguments(가변인수)

def func(*args):
  print(args)
  
func(1, 2, 3, 4)

출력 결과
(1, 2, 3, 4)
  • 하나 이상의 값을 입력받아 튜플 형태로 출력한다. 선언될 변수의 정확한 갯수를 모르는 경우에 사용하며 다양한 값들을 하나로 묶어서 전달한다.

3. Keyword argumenets

def func(a=0, b=0):
  print(a, b)
  
func(1)

출력 결과
(1, 0)
  • 인자 뒤에 default 값을 선언하여 변수의 값을 입력하지 않았을 경우에 기본값으로 사용한다. 이 방식의 가장 큰 특징은 key-value 형태로 인자에 값을 배정하기 때문에 함수 사용 시에 인자들의 순서를 고려하지 않아도 된다는 것이다. 이로 인해 순서의 혼동으로 인한 잘못된 인자 전달을 막을 수 있다.
def func(**kwargs):
  print(kwargs)
  
func(a=1, b=2)

출력 결과
{'a': 1, 'b': 2}
  • 위의 코드와 같이 def func(**kwargs): 형식으로 선언하면 dict형태로 값을 출력한다. 위치 및 갯수에 제한을 받지 않아 편리하다.

Combination

위에서 본 3가지 형식의 인자는 물론 하나의 함수 정의 시에 섞어서 사용할 수 있다. 처음에 우선순위가 있다고 말했는데, 우선순위는 여기에서 중요해진다. 무조건 함수 정의 내의 인자 배치 순서는 positional - arbitrary - keyword 형태가 되어야 한다.

def func(a, b, c=0):
  print(a, b, c)
  
func(a=1, b=2)

출력 결과
1 2 0
def func(c=0, a, b):
  print(a, b, c)
  
func(a=1, b=2)

출력 결과
SyntaxError: non-default argument follows default argument
  • 위의 2개의 코드에서 볼 수 있듯이 함수 인자의 위치에 따라 에러가 발생할 수 있다. Positional로 필수적인 인자들이 앞에 있어야 전달받은 값을 꼭 필요한 곳부터 배정해줄 수 있기 때문이다.
profile
백엔드 개발자입니다.

0개의 댓글