본문 바로가기
Coding/Python

Python Anti Pattern - Not using named tuples when returning more than one value from a function

by Hide­ 2019. 1. 28.
반응형

Not using named tuples when returning more than one value from a function

Named 튜플은 일반적으로 튜플이 사용되는곳에서 사용될 수 있고 해당 값은 인덱스외에도 이름을 통해 접근할 수 있다.

이는 코드를 좀 더 읽기 쉽게 만들어준다.


Anti-pattern

def get_name():
    return "Richard", "Xavier", "Jones"

name = get_name()

# no idea what these indexes map to!
print(name[0], name[1], name[2])

위 코드는 first, middle, last name을 반환하는 unnamed 튜플이다. 

튜플을 호출한 이후에 각 값들은 오직 인덱스를 통해서만 접근할 수 있다.

이러한 코드는 사용하기가 어렵다.

함수를 호출하는 쪽에서 첫번째 요소가 first name, 두번째가 middle name, 마지막이 last name이라는 것을 알아야하기 때문이다.


Best practice

from collections import namedtuple

def get_name():
    name = namedtuple("name", ["first", "middle", "last"])
    return name("Richard", "Xavier", "Jones")

name = get_name()

# much easier to read
print(name.first, name.middle, name.last)

수정된 코드는 named 튜플을 사용하여 여러개의 값을 반환한다.

이 코드는 호출하는 쪽에서 명확한 이름을 통해 값에 접근할 수 있기 때문에 좀 더 사용하기 쉽고 또한 읽기도 쉽다.


출처 : https://docs.quantifiedcode.com/python-anti-patterns/readability/not_using_named_tuples_when_returning_more_than_one_value.html