[Python] 가변 매개변수(variable-length arguments) 위치에 따른 Keyword 매개변수 호출 시 SyntaxError, TypeError
Python 분석과 프로그래밍/Python 프로그래밍 2019. 8. 3. 19:18이번 포스팅에서는 사용자 정의함수(User Defined Function)에서 가변 매개변수(variable-length arguments, arbitrary arguments)의 위치에 따라서 일반 매개변수의 Keyword Argument 호출 여부에 따른 SyntaxError, TypeError 가 발생하는 현상을 살펴보고, 올바른 사용법을 소개하겠습니다.
이게 은근히 헷갈리는 면이 있으므로 이번에 정확하게 알아두면 좋겠습니다.
매개변수의 수를 다르게 해서 사용할 수 있는 가변 매개변수(variable-length arguments, arbitrary arguments) 위치가 뒤에 있는지, 아니면 앞에 있는지에 따라 2개 유형으로 나누어서 Keyword argument 의 올바른 사용법과 Error 발생 유형을 설명하겠습니다.
(1) 이름을 지정한 일반 매개변수를 앞에, 가변 매개변수를 뒤에 정의한 함수 (Keyword argument First, Variable-length Arguments Second) |
(1-1) 올바른 사용법: Keyword argument 사용 안함 (Without Keyword argument name)
In [1]: def repeat_str_KeyArg_first(repeat_num, *strings): ...: result = [repeat_num * strings] ...: return result ...: ...: In [2]: repeat_str_KeyArg_first(3, 'a', 'b', 'c') ...: Out[2]: [('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c')] |
(1-2) Keyword argument를 사용해서 SystaxError가 발생하는 틀린 사용법
=> SyntaxError: positional arguments follows keyword argument
In [1]: def repeat_str_KeyArg_first(repeat_num, *strings): ...: result = [repeat_num * strings] ...: return result ...: In [3]: repeat_str_KeyArg_first(repeat_num = 3, 'a', 'b', 'c') # SyntaxError ...: File "<ipython-input-3-2047f5ba4020>", line 1 repeat_str_KeyArg_first(repeat_num = 3, 'a', 'b', 'c') ^ SyntaxError: positional argument follows keyword argument File "<ipython-input-3-2047f5ba4020>", line 1 repeat_str_KeyArg_first(repeat_num = 3, 'a', 'b', 'c') ^ SyntaxError: positional argument follows keyword argument |
(2) 가변 매개변수를 앞에, 이름을 지정한 일반 매개변수를 뒤에 정의한 함수 (Variable-length Arguments First, Keyword argument Second) |
(2-1) 올바른 사용법: Keyword argument 사용함 (With Keyword argument name)
In [4]: def repeat_str_VarArg_first(*strings, repeat_num): ...: result = [repeat_num * strings] ...: return result ...: ...: In [5]: repeat_str_VarArg_first('a', 'b', 'c', repeat_num = 3) # works well ...: Out[5]: [('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c')] |
(2-2) TypeError 발생하는 틀린 사용법 :
=> TypeError: function() missing 1 required keyword-only argument: 'keyword_arg'
In [4]: def repeat_str_VarArg_first(*strings, repeat_num): ...: result = [repeat_num * strings] ...: return result ...: ...: In [6]: repeat_str_VarArg_first('a', 'b', 'c', 3) # TypeError ...: Traceback (most recent call last): File "<ipython-input-6-13d658b54364>", line 1, in <module> repeat_str_VarArg_first('a', 'b', 'c', 3) TypeError: repeat_str_VarArg_first() missing 1 required keyword-only argument: 'repeat_num' Traceback (most recent call last): File "<ipython-input-6-13d658b54364>", line 1, in <module> repeat_str_VarArg_first('a', 'b', 'c', 3) TypeError: repeat_str_VarArg_first() missing 1 required keyword-only argument: 'repeat_num' |
많은 도움이 되었기를 바랍니다.
이번 포스팅이 도움이 되었다면 아래의 '공감~'를 꾸욱 눌러주세요. :-)
'Python 분석과 프로그래밍 > Python 프로그래밍' 카테고리의 다른 글
[Python] Python 객체를 직렬화해서 AWS S3에 저장하기 (0) | 2022.01.03 |
---|---|
[Python Exceptions] try, except, else, finally 절을 이용한 Python Programming 예외 처리 (0) | 2019.08.08 |
[Python] for loop 반복문의 진척율을 콘솔창에 출력해서 확인하는 방법 (1) | 2019.07.13 |
[Python] 함수나 클래스의 구현을 미룰 때 쓰는 pass 문 (4) | 2018.07.24 |
[Python] 함수 안에 TypeError, ValueError 메시지 지정하기 (0) | 2018.07.14 |