-
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