▶ 함수 매개변수에 별표 * 사용 (*=애스터리스크, *args)
함수 정의 시 매개변수 앞에 별표(*, 애스터리스크)를 한 개 붙이면, 함수 호출 시 입력한 전달인자의 값이 튜플로 묶여 함수에 전달된다.
# python 3.9.5
def show_scores(*scores):
print(type(scores))
print(scores)
show_scores(10, 20, 30)
print()
show_scores(100, 110, 120, 130, 140, 150)
위의 코드를 실행하면, 그 출력은 아래와 같다.
위의 실행 결과에서 알 수 있듯이
함수의 매개변수 scores 앞에 별표(*) 하나를 붙이면, show_scores 함수 호출 시 입력한 값 10, 20, 30 또는 100, 110, 120, 130, 140, 150의 전달인자는 그 개수에 관계없이 하나의 튜플로 묶여 scores 매개변수에 전달된다.
위의 코드는 내장 함수(엄밀히 말해 클래스) type을 이용해 show_scores 함수의 매개변수 scores의 타입을 출력하는 코드를 포함한다.
▶ 함수의 전달인자에 별표 한 개(*)를 사용하면
별표 *가 앞에 붙은 매개변수를 함수의 전달인자로 사용할 때 별표(*)를 붙이는 경우와 붙이지 않는 경우 함수에 전달되는 값은 달라지게 된다.
예를 들어 아래의 코드와 같이
80, 85, 90, 95, 100의 값을 튜플로 받는 show_scores_1 함수의 socres 변수를 show_scores_2 함수의 전달인자로 사용할 때,
*scores로 표현하면 show_scores_2(80, 85, 90, 95, 100)와 같은 의미를 가지며,
별표가 없는 scores로 표현하면 show_scores_2 함수에 하나의 튜플을 전달하는 show_scores_2((80, 85, 90, 95, 100))와 같은 의미를 가지게 된다.
# python 3.9.5
def show_scores_1(name, *scores):
print('** show_scores_1 **')
print(name, *scores)
print(name, scores)
show_scores_2(*scores)
show_scores_2(scores)
def show_scores_2(*scores):
print()
print('** show_scores_2 **')
print(scores)
show_scores_1('student', 80, 85, 90, 95, 100)
위에서 설명한 것처럼, 위 코드의 실행 결과는 아래와 같다.
데이터 타입 튜플은 그 값이 하나일 때 (a, )와 같이 표현됨을 참고한다.
▶ 함수의 반환값을 별표(*)로 받는다면
별표(*)는 함수의 반환값에 대해서도 사용할 수 있다.
아래의 코드에서 처럼 함수 func_1의 반환값 1은 r1에, 이후의 값은 r2에 대입된다.
이때 r2의 데이터 타입은 리스트이다.
# python 3.9.5
def func_1():
return 1, 'python', ['if', 'for', 'while']
r1, *r2 = func_1()
print(type(r1), r1)
print(type(r2), r2)
'코딩 > 파이썬 기초' 카테고리의 다른 글
[Python] 파이썬 튜토리얼 021. 함수 매개변수에 별표 *와 **의 혼용 (*args, **kw) (0) | 2021.06.13 |
---|---|
[Python] 파이썬 튜토리얼 020. 함수 매개변수에 별표 ** 사용 (*=애스터리스크, **kw) (0) | 2021.06.12 |
[Python] 파이썬 튜토리얼 022. 함수, 특수 매개변수 정의 - positional only, positional or keyword, keyword only (/, *) (0) | 2021.06.06 |
[Python] 파이썬 튜토리얼 018. 함수 호출 시 키워드=값 형식으로 전달인자 값 설정 (0) | 2021.06.04 |
[Python] 파이썬 튜토리얼 017. 함수의 매개변수 값 초기화 (0) | 2021.05.30 |