본문 바로가기

Til

TIl 24.02.29 파이썬 -패킹/언패킹?? (*args , **kwargs)

 

패킹(Packing): 여러 개의 값을 하나의 변수에 묶어서 저장하는 것

 *args는 위치 인자를 패킹하는데 사용 - 호출 시 전달된 모든 위치 인자들은 하나의 튜플로 묶여 함수 내에서 args 변수로 사용

 

언패킹(Unpacking): 변수에 저장된 값을 여러 개의 값으로 풀어서 사용하는 것

함수 호출 시 *args와 **kwargs를 사용하여 패킹된 값을 언패킹할 수 있음

 

 *시퀀스(튜플, 리스트 등)를 언패킹

**딕셔너리를 언패킹


*args

 

*args는 파이썬에서 함수를 정의할 때 사용되는 매개변수

함수가 임의의 개수의 위치 인자(arguments)를 받을 수 있음

*args는 매개변수 이름 앞에 별표(*)를 붙여서 표시

-함수 내부에서는 튜플 형태로 위치 인자들을 처리할 수 있음

 
def my_function(*args): #args를 사용하여 정의
    for arg in args:
        print(arg)   #각 요소들이 반복문을통해 출력

my_function(1, 2, 3
 
#출력
1
2
3
 

 

 

??여기서 튜플이란??

 

튜플(Tuple)은 파이썬에서 사용되는 데이터 구조 중 하나로, 여러 개의 요소를 저장하는 컬렉션

튜플은 리스트와 유사하게 여러 값을 하나의 변수에 저장할 수 있음

 

-- 주요 특징

불변성(Immutable): 튜플은 생성된 후에 수정할 수 없음

리스트와 달리 튜플은 수정할 수 없음 -> 안정적이며 불변성이 요구되는 상황에 유용

 

쉼표로 구분된 요소들: 튜플은 괄호(())로 둘러싸인 쉼표로 구분된 요소들의 시퀀스

 예시, (1, 2, 3) 으로 정의할수 있음 

 

인덱싱과 슬라이싱: 리스트와 마찬가지로 튜플의 요소에는 인덱스를 사용하여 접근가능

슬라이싱을 통해 부분적으로 접근할 수도 있음

 

여러 타입의 요소를 포함할 수 있음: 튜플은 서로 다른 데이터 타입의 요소를 포함가능

예시,  (1, 'apple', True)와 같이 정의할 수 있음 

 

-------------

 

**kwargs

 

**kwargs는 파이썬에서 함수를 정의할 때 사용되는 매개변수

함수가 임의의 개수의 키워드 인자(keyword arguments)를 받을 수 있음

**kwargs는 매개변수 이름 앞에 별표 두 개(**)를 붙여서 표시 

-함수 내부에서는 딕셔너리 형태로 키워드 인자들을 처리할 수 있음

 

 
def my_function(**kwargs):  # kwargs는 키워드 인자들의 딕셔너리
 
    for key, value in kwargs.items():   # 딕셔너리의 각 키와 값에 대해 반복하여 출력
        print(f"{key}: {value}")

my_function(name="ABC", age=30, city="New York")
 
#결과
name: ABC
age: 30
city: New York