Post

[Python] 파이썬의 Asterisk(*)

  1. 곱셈 및 거듭제곱 연산
  2. 리스트 확장
  3. 가변인자
  4. Unpacking

파이썬에서 * (별표, Asterisk)는 다양한 방법으로 사용되는데, 이에 대해 알아보자.

✅ 곱셈 및 거듭제곱 연산

다들 알다시피 기본적으로 곱셈 및 거듭제곱 연산으로 사용한다.

1
2
3
4
>>> 2 * 3
6
>>> 2 ** 3
8

✅ 리스트 확장

리스트형 컨테이너 타입에서 데이터를 반복적으로 확장하기 위해 사용한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
list1 = [0] * 10
tuple1 = (1, ) * 10

list2 = [1, 2, 3] * 3
tuple2 = (1, 2) * 3

print(list1)
print(tuple1)
print(list2)
print(tuple2)

>>> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>> (1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
>>> [1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> (1, 2, 1, 2, 1, 2)

✅ 가변인자

들어오는 인자의 개수를 모르거나, 어떠한 인자라도 받아서 처리해야하는 경우 사용한다. 파이썬 코드들을 보면 *args, **kwargs를 사용한 코드를 볼 수 있는데, 이 부분이 바로 가변인자를 받는 부분이다.

파이썬에서 인자의 종류로 positional argumentskeyword arguments가 존재한다. positional arguments는 위치에 따라 정해지는 인자로 *을 사용하고, keyword arguments는 키워드를 갖는 인자로 **을 사용한다.

✔ positional arguments

1
2
3
4
5
6
7
8
9
10
def print_info(*args):
    print(args)
    print(type(args))

print_info('홍길동', '25', '남자')

'''output
>>> ('홍길동', '25', '남자')
>>> <class 'tuple'>
'''

✔ keyword arguments

1
2
3
4
5
6
7
8
9
10
def print_info(**kwargs):
    print(kwargs)
    print(type(kwargs))

print_info(name='홍길동', age='25', gender='남자')

'''output
>>> {'name': '홍길동', 'age': '25', 'gender': '남자'}
>>> <class 'dict'>
'''

✔ positional arguments & keyword arguments

positional arguments 와 keyword arguments를 같이 사용할 때는, positional arguments가 먼저 나와야한다. 순서가 반대로 될 경우 error가 발생한다. positional arguments는 생략이 불가능하며 정해진 위치에 인자를 전달해야 하지만, keyword arguments는 default 값을 설정할 수 있어 생략할 수 있기 때문이다.

1
2
3
4
5
6
7
8
9
def print_info(*args, **kwargs):
    print(args)
    print(kwargs)
print_info('홍길동', '25', gender='남자')

'''output
>>> ('홍길동', '25')
>>> {'gender': '남자'}
'''

✅ Unpacking

컨테이너 타입의 데이터를 Unpacking 할 때 사용한다.

1
2
3
4
numbers = [1, 2, 3, 4, 5]
print(*numbers)

>>> 1 2 3 4 5

다른 변수에 가변적으로 Unpacking 할 때 사용한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
numbers = [1, 2, 3, 4, 5]
*a, = numbers
>>> a = [1, 2, 3, 4, 5]

*a, b = numbers
>>> a = [1, 2, 3, 4]
>>> b = 5

a, *b = numbers
>>> a = 1
>>> b = [2, 3, 4, 5]

a, *b, c = numbers
>>> a = 1
>>> b = [2, 3, 4]
>>> c = 5
This post is licensed under CC BY 4.0 by the author.

[Python] itertools. Permutation, Combination. 순열과 조합

[Python] 변수명에 변수 할당(for문을 통해 변수명 할당)