*바쁘신 분들을 위한 빠른 해결법
## test_dict.get("k1", default=0) ## default라는 설명을 적은것이 에러의 원인
test_dict.get("k1", 0) ## default라는 설명을 제거하면 된다.
해당 에러는 왜 발생하는가?
no keyword argument 에러는 python의 함수에서 Keyword Argument를 사용할 수 없기 때문입니다. 이러한 함수는 주로 Built-in function에서 발생합니다.
Python은 원래 Keyword Argument를 자유롭게 사용할 수 있습니다. 하지만 python에서 제공하는 Built-in function은 C-level API이기 때문에 Keyword Arguments가 제공되지 않습니다. built-in function을 사용하실 때는 positon Arguments를 사용하는 것을 보통 추천드립니다..
* C/C++에서 compile 된 함수들을 사용한다 생각하면 됩니다. position Arguments만 가질 뿐, keyword Arguments를 가지지 않습니다.
사실 이런 에러의 원인은 찾기 쉽지 않습니다. 왜냐하면 보통은 코드의 품질을 올리기 위해 keyword를 작성할 때 생기는 에러이기 때문입니다. 심지어 C-level에서 만들어진 python built-in function에서만 생기는 생소한 경우입니다.
좀 더 자세한 설명을 위해 dict.get() method를 사용해 보겠습니다.
dictionary type의 .get() 예시
python.org에서 dictionary type(이하 dict)가 사용하는 method 중에 get(key[, default])를 찾아볼 수 있습니다.
이 method는 dict가 가지고 있는 key값을 찾아 value를 출력하고, 못찾으면 default로 지정된 값을 출력합니다.
parameter 첫 번째로 key, 두 번째는 default를 받습니다. 하지만 이 parameter를 Keyword Argument로는 사용할 수 없고, Position Argument로만 받을 수 있습니다. code를 실제로 작성하다가 설명을 확인해 보면 argument name이 다르다는 것을 확인할 수 있습니다.
그래도 Keyword Arguments을 억지로 사용하려고 하면 아래와 같은 에러가 발생하게 됩니다.
이런 에러를 해결하려면 Position Arguments 방식으로 적어야 합니다.
*reference
https://docs.python.org/3/library/stdtypes.html?highlight=dict%20get#dict.get