ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python - namedtuple
    개발 2023. 2. 14. 18:23

     

    namedtuple

     

    파이썬에서 튜플은 컴마로 나눠진 데이터의 집합을 말한다. 예로 이런 것들은 모두 튜플이다 

     

    data: Tuple[str | int, ...] = (1, 2, 4, "Geek")

     

     

    튜플은 배열처럼 index로 접근할 수 있으나 Dict처럼 개별 값에 대한 키 값이 없다보니 관리하는게 쉽지 않다. 그래서 파이썬에서는 namedtuple 걸 사용해 필드 값을 설정할 수 있게 했다. 

     

    from collections import namedtuple
    
    Point = namedtuple("Point", ["x", "y"])
    point = Point(x=3, y=4)

     

     

    결과 값은 다음과 같이 나온다. 필드 명에 따라서 값 접근이 가능하기 때문에 더 직관적으로 값을 받을 수 있다. 

     

    print(point)
    print(point.x)
    print(point.y)
    
    #####
    
    Point(x=3, y=4)
    3
    4

     

    namedtuple은 함수의 리턴값으로 사용하면 유용하다. 함수의 리턴 값으로 일반 튜플을 주기에는 직관적이지 못하고 그렇다고 클래스까지 만들기는 귀찮을 경우 namedtuple을 통해서 필드값으로 명시해줄 수 있다. 아래 코드는 소켓 정보를 리턴해줄 때 SocketInfo라는 네임드 튜플을 만들어서 리턴해줬다. 받는 쪽에서는 namedtuple 리턴 값을 이용해서 player_id와 game_id 값을 확인했다.

     

    def _get_game_socket_info(sid: str):
        SocketInfo = namedtuple("SocketInfo", ["player_id", "game_id"])
    
        player_id = int(rd.hget(_socket_key(sid), "player_id"))
        game_id = int(rd.hget(_socket_key(sid), "game_id"))
    
        return SocketInfo(player_id=player_id, game_id=game_id)
        
    def start(sid: str):
        socket_info = _get_game_socket_info(sid)
    
        player_id = socket_info.player_id
        game_id = socket_info.game_id

    '개발' 카테고리의 다른 글

    JAVA - 직렬화, 역직렬화  (0) 2023.02.24
    Flask SQLAlchemy vs SQLAlchemy  (0) 2023.02.14
    Python - 제너레이터  (0) 2023.02.14
    Python - 데코레이터  (0) 2023.02.14
    Nodejs Blocking/Non-Blocking,  (0) 2023.01.26

    댓글

Designed by Tistory.