반응형
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