ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python dictionary get 메소드 vs Django objects get 메소드
    Python 2022. 1. 2. 01:35

    python dictionary get 메소드

     

    딕셔너리의 키에 해당하는 값을 가져올 때 두가지 방법이 있습니다.

    1. get() 방식

    2. 대괄호 방식

     

    두 가지의 차이점에 대해서도 모른채 코드를 작성했었는데 너무나 부끄럽습니다..

    그래서 오늘 이렇게 정리해서 확실히 알고 코드를 작성해야겠습니다.

     

    키에 해당하는 값이 있을 때는 같은 값을 출력합니다.

    그러나 해당 키가 존재하지 않는 키라면 완전 다른 결과를 보여줍니다.

    우선 아래의 코드들이 어떤 차이점이 있는지 보시죠.

    test
    result

     

    1. get() 방식

     - 값이 있을 때 : 키에 해당하는 값 출력(예시 : 3번째 줄)

     - 값이 없을 때 : 'None'으로 출력(예시 : 4번째 줄)

     - 값이 없을 때 : default 값 출력(예시 : 5번째 줄)

     

    2. 대괄호 방식

     - 값이 있을 때 키에 해당하는 값 출력(예시 : 7번째 줄)

     - 값이 없을 때 KeyError 발생(예시 : 8번째 줄)

     

    그래서 코드를 작성할 때는 결과값에 대해서도 생각하면서 작성해야 합니다.

     

    특히 KeyError는 회원가입, 로그인뷰에서 필수적으로 except 처리했고 필요한 키 값이 없을 때 KeyError가 발생해서 특히 회원가입, 로그인뷰에서 필수적으로 except 처리했는데 막상 이렇게 두 가지를 구분하는 것조차 못 했던걸 보면 아는게 아니라 그 view 단에서만 왜 쓰는지 단편적으로만 알고 있었던 것 같습니다.

     

    그리고 이 get과 함께 헷갈려하고 제대로 몰랐던 것이 django의 objects.get 메서드입니다.

    전에 정리했던 것을 다시 가져와서 보겠습니다.

     

    django의 objects.get()

     - 조건에 만족하는 하나의 객체만을 반환

     - 조건에 만족하는 객체가 없거나 2개 이상이면 에러 발생 (DoesNotExist / MultipleObjectsReturned)

     - 객체 하나만을 반환하므로 objects.filter와 다르게 for문을 사용할 필요 X

     

    'get'은 위에서 설명했듯이 조건에 맞는 하나의 객체만을 가져옵니다. 만약 없거나 둘 이상이라면 에러가 발생합니다.

     

    댓글

Designed by Tistory.