[Python] 파이썬 별표 의미 및 역할 + 자잘한 팁
한 줄 요약: 리스트 내의 아이템을 unpacking함
머신러닝 코드를 짜다가 아래와 같은 feature_engine object들을 문자열로 받아 한꺼번에 파이프라인에 넣어야 하는 일이 생겼다.
feature = ['feature_engine.outliers.trimmer.OutlierTrimmer', 'feature_engine.outliers.power.PowerTransformer']
파이프라인은 아래와 같이 estimator object 타입 리스트를 받는다고 되어있어 eval로 덮어주면 끝인줄 알았으나, 원했던 것처럼 OutlierTrimmer를 거치고 PowerTransformer를 거치는 것이 아니라 오른쪽과 같이 리스트에 담겨서 한꺼번에 처리되게 되었다.
![]() |
![]() |
이 때 아래와 같이 iterate를 해주면 또 generator형식으로 pipeline에 들어가 문제를 겪던 중 *에 대해서 알게 되었다.
make_pipeline(x for x in feature)
파이썬 별표 사용법은 총 5가지 정도로 나뉜다.
1. Unpacking: Iterate 가능한 문자열, 튜플, 리스트의 개별 요소로 반환
numbers = [1, 2, 3, 4]
print(*numbers)
# 결과: 1 2 3 4
2. Extended Unpacking: 개별 요소로 확장하여 사용도 가능하다.
first, *rest = [1, 2, 3, 4]
print(first)
# 결과 1
print(rest)
# 결과 [2, 3, 4]
3. Arbitrary Arguments in Function Definitions: 함수의 argument의 갯수를 지정하지 않고 다양하게 받아 사용.
def print_args(*args):
for arg in args:
print(arg, end = ', ')
print_args(1, 2, 3)
# 결과 1, 2, 3
4. Keyword Arguments in Function Calls: 함수에서 키워드 argument를 dictionary로 전달
def print_kwargs(**kwargs):
print(type(kwargs))
for key, value in kwargs.items():
print(key, value)
print_kwargs(name="Eric", major="CS", height=180)
"""
결과
<class 'dict'>
name Eric
major CS
height 180
"""
5. Unpacking in List, Tuple, and Set Literals: 리스트, 튜플, set 등에서 다른 반복가능한 요소 원소를 개별로 반환.
a = ['g', 'l', 'o']
b = ['r', 'y']
c = ['k', 'o']
my_name = [*a, *b, *c]
print([a, b, c])
print(my_name)
"""
결과
[['g', 'l', 'o'], ['r', 'y'], ['k', 'o']]
['g', 'l', 'o', 'r', 'y', 'k', 'o']
"""
6. Enforce keyword-only arguments in Class: 별 이후에 있는 argument에 대해 초기값 지정을 강제
class Student(self, age, *, color='blue', name, drink):
self.age = age
self.color = color
self.name = name
self.drink = drink
Student(drink = 'water', name='gloryko')
Student(age = 3.141592, drink = 'americano', name = 'skygrace')
Student(color = 'red', drink = 'americano', name = 'skygrace')
# 위와 같이 *이후에 값을 꼭 넣어줘야 오류가 발생하지 않음.
파이썬은 참 원하는 것들이 이미 다 있어서 찾기만 하면 되는 느낌이다.