파이썬 함수에 파라미터를 전달할 때는 지켜야할 순서가 있습니다. 순서는 다음과 같으며 이 순서가 지켜지지 않는 경우에는 오류가 발생합니다.
- Positional Arguments
- Positional Arguments with Default
- Variable Length Arguments
- Keyword Arguments
- Keyworld Arguments with Default
- Variable Length Keyword Arguments
복잡해보일 수 있지만, 파라미터를 전달하는 방식을 하나씩 살펴보면 충분히 이해할 수 있는 개념입니다. 먼저, 파라미터의 전달 방식은 크게 다음과 같이 둘로 구분할 수 있습니다.
- 순서를 맞춰 전달: Positional Arguments
- 이름을 맞춰 전달: Keyword Arguments
다음은 두 가지 방법으로 함수에 파라미터를 전달하는 예시입니다.
def argumentsTest (positionalArg, keywordArg):
print(positionalArg)
print(keywordArg)
argumentsTest("positionPara", keywordArg ="keywordPara")
# 'positionPara'
# 'keywordPara'
이 때, Positional Arguments가 Keyword Arguments보다 먼저 나와야 하는 이유는 Positional Arguments가 순서에만 의존하여 파라미터를 받기 때문입니다. 즉, 이를 먼저 처리하고 Keyword Arguments를 처리하는 것이 논리적입니다. 만약, 순서를 지키지 않는 경우 Syntax Error가 발생합니다.
파라미터를 전달하는 또 다른 방법은 다음과 같이 기존의 방식에 디폴트 값을 지정하는 것입니다. 전달하는 특정 파라미터에 값이 지정되지 않은 경우에는 해당 디폴트 값이 적용됩니다.
- 순서를 맞춰 전달하되 기본값 지정: Positional Arguments with Default
- 이름을 맞춰 전달하되 기본값 지정: Keyword Arguments with Default
def argumentsTest (positionalArg = "positionParaWithDefault", keywordArg = "keywordParaWithDefault"):
print(positionalArg)
print(keywordArg)
argumentsTest("positionPara")
# 'positionPara'
# 'keywordParaWithDeafult'
여기서 주의해야 할 점은 파라미터를 선언하며 지정하는 값은 '디폴트 값'이며, 함수를 호출하면서 값을 지정해 파라미터로 전달하는 것은 'Keyword Arguments 방식'이라는 것입니다. 즉, Positional Arguments에 디폴트 값을 정해주어도 이는 여전히 Positional Arguments인 것입니다.
마지막으로 Variable Length (Keyword) Arguments를 사용하여 여러 파라미터를 전달할 수 있습니다. 이 때에도 Position Arguments보다 Keywords Argumetns가 뒤에 나와야 합니다.
- 순서대로 여러 파라미터를 전달(가변 파라미터): Variable Length Arguments(*args)
- 이름을 맞춰 여러 파라미터를 전달(가변 키워드 파라미터): Variable Length Keyword Arguments(**kwargs)
def argumentsTest (*positionalArgs, **keywordArgs):
print(positionalArg)
print(keywordArg)
argumentsTest("positionPara1", "positionPara2", keywordPara1 = "keywordPara3", keywordPara2 = "keywordPara4")
# ('positionPara1', 'positionPara2')
# ('keywordPara1' = 'keywordPara3', 'keywordPara2' = 'keywordPara4')
이상으로 함수에 파라미터를 전달하는 방법들에 대해 알아봤습니다. 기본적으로 Positional Arguments가 Keywords Arguments보다 먼저 나와야 하며, 이후 default 값이 있는 arguments, variable length arguments로 순서가 이어집니다.
더 많은 실제적인 예시가 궁금하시다면 제가 공부하며 정리한 함수와 파라미터 TIL 로그를 살펴보셔도 좋을 거 같습니다.
'Python' 카테고리의 다른 글
파이썬 클래스와 self 설명 (0) | 2022.01.21 |
---|---|
파이썬 패키지 정리 (0) | 2022.01.12 |
파이썬 모듈 사용 방법 정리 (0) | 2022.01.12 |
파이썬 데코레이터 설명 (0) | 2022.01.04 |
파이썬 List, Tuple, Set, Dictionary 차이점 정리 (0) | 2022.01.03 |