[Python] Asterisk를 어떻게 쓰는거에요?

devhans·2024년 7월 7일

Python

목록 보기
6/8
post-thumbnail

Asterisk (*)

파이썬에서의 Asterisk(*)는 유독 다른 언어에 비해 연산의 종류 및 쓰임새가 풍부합니다. 단순 곱셈 및 거듭제곱 연산 이외의 경우에 대해 이 포스팅에서 정리하려 합니다.

1. 곱셈 연산

*을 숫자형 연산 에 사용할 수 있습니다.
1개 사용시엔 곱셈 연산, 2개 사용시엔 제곱 연산을 위해 사용합니다.

result = 3 * 4
print(result)  # 출력: 12
result = 3 ** 4
print(result)  # 출력: 81

2. 리스트형 컨테이너 타입의 데이터 반복 확장

리스트나 튜플 등 반복 가능한 객체를 확장할 때도 Asterisk를 사용할 수 있습니다.

리스트 확장

리스트를 반복 확장하려면 Asterisk를 사용합니다.

list1 = [1, 2, 3]
list2 = list1 * 3

튜플 확장

튜플도 같은 방식으로 확장할 수 있습니다.

tuple1 = (1, 2, 3)
tuple2 = tuple1 * 2

3. 가변 인자 (Variadic Arguments)

패킹(Packing)은 여러 개의 값을 하나의 컬렉션(예: 리스트, 튜플)으로 모으는 과정입니다. 위치 인자 패킹과 키워드 인자 패킹이 있습니다.

위치 인자(positional arguments)

함수를 정의할 때 인자에 *를 사용하면 가변 인자로 받을 수 있습니다. 파이썬에서 함수에 전달되는 가변 인자들을 튜플로 받아 처리할 때 사용됩니다. 이를 통해 함수는 다양한 수의 위치 인자(positional arguments)를 처리할 수 있습니다.

def foo(*args):
    for arg in args:
        print(arg)

키워드 가변 인자 (Keyword Variadic Arguments)

함수를 정의할 때 **를 사용하면 키워드 가변 인자를 받을 수 있습니다. 함수에 전달되는 키워드 인자를 딕셔너리 형태로 받아 처리할 수 있게 합니다.

def foo(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

위치 인자와 키워드 가변인자

함수가 위치 인자와 키워드 인자를 모두 받아 처리할 수 있습니다.

def greet(greeting, *args, **kwargs):
    # 기본 인사 메시지 출력
    print(greeting)
    
    # 위치 인자 출력
    for name in args:
        print(f"Hello, {name}!")
    
    # 키워드 인자 출력
    for key, value in kwargs.items():
        print(f"{key}: {value}")

# 함수 호출
greet("Welcome!", "Alice", "Bob", location="Wonderland", age=30)

4. 언패킹 (Unpacking)

리스트나 튜플 등의 데이터를 함수 호출 시 언패킹할 수 있습니다.

def foo(a, b, c):
    print(a, b, c)


참고 : 이 때, 리스트나 튜플 등의 데이터가 원래 함수의 인자 갯수랑 동일한 길이여야 합니다.

리스트 언패킹을 통해 새로운 리스트를 만들 수도 있습니다

list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined_list = [*list1, *list2]

profile
책 읽고 운동하기

0개의 댓글