우노
[Python] zip, 인자 언패킹(argument unpacking), *args, **kwargs 본문
Language/Python
[Python] zip, 인자 언패킹(argument unpacking), *args, **kwargs
운호(Noah) 2021. 4. 18. 15:54zip
여러 개의 순회 가능한(iterable)한 객체를 인자로 전달 받고,
각 객체가 담고 있는 원소를 차례대로 접근하며 튜플의 형태로 묶고,
요소 개수만큼의 새로운 iterable 객체를 생성하는 기능입니다.
예제 코드
list1 = ['a', 'b', 'c'] list2 = [1, 2, 3] pairs = [pair for pair in zip(list1, list2)] print(pairs) # [('a', 1), ('b', 2), ('c', 3)]
인자 언패킹(argument unpacking)
packing 은 여러 객체를 하나의 객체로 합치는 기능이라면,
unpacking 은 여러 객체를 포함하고 있는 객체를 다시 분리하는 기능입니다.
매개변수가 아닌, 인자 앞에 * 또는 ** 을 붙여서 사용합니다.
- 별 한개(*) : list, tuple 의 인자 언패킹
- 별 두개(**) : dictionary 의 인자 언패킹 (a.k.a. 키워드 인자 언패킹)
예제 코드 1
# list 요소를 더하는 경우 def add(a, b): return a + b add(1, 2) # 3 add([1, 2]) # TypeError add(*[1, 2]) # 3
예제 코드 2
# list 요소와 dictionary 요소를 더하는 경우 def other_way(x, y, z): return x + y + z x_y_list = [1, 2] z_dict = {"z": 3} # list 인자 언패킹이 dictionary 인자 언패킹보다 앞에 있어야합니다. other_way(*x_y_list, **z_dict) # 결과: 6
args, kwargs
*args : 여러 개의 일반 인자를 전달 받아, 튜플로 만들어주는 기능입니다.
**kwargs : 여러 개의 키벨류 인자를 전달 받아, 딕셔너리로 만들어주는 기능입니다.
예제 코드
def magic(*args, **kwargs): print("unnamed args:", args) print("keyword args:", kwargs) magic(1, 2, key1="word1", key2="word2") # unnamed args: (1, 2) # keyword args: {'key1': 'word1', 'key2': 'word2'}
'Language > Python' 카테고리의 다른 글
[Python] Pandas DataFrame 컬럼 값 조건 변경 (4) | 2021.06.05 |
---|---|
[Python] dictionary 키, 값 정렬 (0) | 2021.05.26 |
[Python] Anaconda Python 버전 확인 및 변경 (0) | 2021.04.01 |
[Python] Matplotlib plot 폰트 크기 변경 (0) | 2021.03.31 |
[Python] Pandas DataFrame column에 numpy 배열 추가하기 (0) | 2021.01.14 |
Comments