이번 포스팅에서는 파이썬의 기본 중에서 굉장히 중요한 용어 두가지를 알아보려고 합니다.
바로 인자 (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)는 가변인자와 다르게 인자를 튜플이 아닌 딕셔너리로 받아준다.
더 자세한 사항은 아래 포스팅에서 확인 가능하다
'Programming > Python' 카테고리의 다른 글
파이썬 라이브러리 (Library)와 모듈 (Module) - 심코딩 (2) | 2022.11.10 |
---|---|
Python 파이썬 self와 __init__ 알아보기 - 심코딩 (2) | 2022.11.08 |
파이썬 exe 실행 파일 Pyinstaller로 만들기 (심코딩) (0) | 2022.11.01 |
파이썬으로 달력 만들어보기! - 심코딩 (3) | 2022.10.05 |
파이썬으로 원하는 웹사이트 오픈하기 - 심코딩 (2) | 2022.09.28 |
댓글