본문 바로가기
Programming/Python

파이썬 인자와 매개변수 알아보기 (Python _ Argument & Parameter) - 심코딩

by 심코딩 2022. 11. 6.

이번 포스팅에서는 파이썬의 기본 중에서 굉장히 중요한 용어 두가지를 알아보려고 합니다.

 

바로 인자 (Argument)매개변수 (Parameter) 입니다. 파이썬에서 인자가 어떻게 사용되는지, 그리고 가변인자란 무엇인지도 한번 같이 알아보도록 하겠습니다.

 

인자 (Argument) 와 매개변수 (Parameter) 란 무엇인가

 

인자와 매개변수에 대해 알아볼 때 저는 각 단어가 어떤 의미가 있느냐 보다는, 한 함수내에서 예시를 보여주면서 공부했던 게 더 잘 이해가 되었습니다. 한번 아래 코드를 잠시 보겠습니다.

 

def func1(word1, word2):
    print(word1, word2)

func1("Answer1","Answer2")

 

위 함수 func1 에는  word1, word2 이라는 2개의 매개변수를 넣을 수 있도록 정의 되어 있습니다. 이렇게 함수 내에서 포함되는 특성을 가진 것을 매개변수라고 합니다. 또한 아래에는 제 자신이 Answer1, Answer2를 func1에 전달을 하는 것을 볼 수 있습니다. 이 때에 Answer1 과 Answer2와 같이 함수에 전달하는 값을 인자 라고 합니다.

 

 

함수 인자 전달 방식

 

파이썬에서의 함수 인자 전달 방식은 두가지가 있습니다. 첫번째는 값에 의한 호출 (call-by-value) 그리고 두번째는 참조에 의한 호출 (call-by-reference) 입니다.

 

값에 의한 호출(call-by-value)는 함수에서 값을 복사해서 전달해주는 방식으로, 전달될 값이 그대로 복사되어 인자로 활용이 됩니다. 아래 코드를 보시면 이해가 더 쉬우실 겁니다.

def func2(number):
    number += 1
    print(number)

number = 100
func2(number)

print(number)


#### Result ####
101
100
################

 

number가 func2 함수에 들어갔다가 나왔지만 이 number 그 자체는 변하지 않고 원본의 값을 유지 합니다.

 

참조에 의한 호출(call-by-reference)는 직접적으로 값을 가지고 있는 변수가 그대로 함수내에서 변경이 되기 때문에 실제 원본의 값이 변경이 된다. 하지만 파이썬에서는 call-by-reference를 지원해주지 않는다.

 

가변인자 (*args) 와 가변 키워드 인자 (**kwargs)

 

위 예시에 있는 함수에서는 매개변수와 인자의 갯수가 딱 2개씩으로 정해져 있었었다. 하지만 만약 인자의 갯수를 정하고 싶지 않다면 어떻게 해야 할까? 바로 가변인자인 *args를 사용하면 된다. 아래 코드를 보자

 

def func2(*args):
    
    print(*args)

func2(1,2,3,4,5)
func2(1,2,3,4)

#####Result#####
1 2 3 4 5
1 2 3 4
################

 

가변인자 (*args)를 사용하면 인자를 원하는 갯수대로 그대로 처리를 할 수 있다. 다만 args로 받은 인자는 튜플로 받아진다는 것을 참고하자.

 

가변인자와 비슷한 가변키워드인자 (**kwargs)는 가변인자와 다르게 인자를 튜플이 아닌 딕셔너리로 받아준다.

더 자세한 사항은 아래 포스팅에서 확인 가능하다

 

 

파이썬에서 *args와 **kwargs란? (파이썬 Python)

파이썬을 하다보면 *args와 *kwargs라는 것들을 종종 보게 된다. 하지만 나도 예전에는 항상 볼 때마다 이게 무엇인지 하고 넘어갔었는데, 파이썬을 하다보면, 특히 함수를 만들다보면 가끔 정말 필

s1mcoding.tistory.com

 

 

댓글