728x90
반응형
C언어를 처음 배운다면 * 연산자가 주는 위협감은 어느 정도 있을 꺼라 예상이 되는데, 파이썬에서 * 연산자는 포인터가 아닙니다.
파이썬 함수 선언을 보면, 입력 매개변수의 개수를 정확히 지켜야 합니다.
def fun(data_1, data_2):
print("Input Data :", data_1, data_2)
fun(10, 20)
# 오류 발생
fun(50)
만약 함수의 입력 매개변수에 몇 개의 데이터가 들어갈지 정확히 모른다면 어떻게 될까요?
그때 사용하는 것이 *args입니다.
args는 arguments의 약자이고, 함수의 입력 매개변수에 몇 개 들어가는지 모를 때 사용합니다. 또한 *args를 사용하면 함수의 return값은 tuple의 형태를 가집니다.
아래 예제처럼 args_fun함수에 매개변수가 계속 증가해도 오류가 발생하지 않는 걸 확인할 수 있습니다. args_fun 함수 안에서 입력된 매개변수의 type을 찍어주었는데 모두 tuple 형태인 것도 알 수 있습니다.
def args_fun(*args):
print(args)
print(type(args))
print()
args_fun("Kim") # 1)
args_fun("Kim", "Park") # 2)
args_fun("Kim", "Park", "Lee") # 3)
튜플의 가장 큰 특징은 "순서 O, 중복 O, 수정 X, 삭제 X" 이기 때문에, insert, reverse, del, pop 함수는 쓸 수 없습니다. 따라서 return 시에 list로 형 변환해주는 것이 좋습니다.
def args_fun(*args):
return args
test = args_fun(10, 20, 30, 40)
# 오류 나는 코드
# test.insert(0, 100)
# print(test)
# test.reverse()
# print(test)
# del test[3]
# print(test)
# test.pop()
# print(test)
리턴 값을 list type로 형변환
튜플에 대한 자세한 내용은 아래 링크를 확인해주세요.
2020.06.09 - [파이썬/파이썬 이론] - [파이썬] 파이썬 Tuple(튜플), index(), count(), in 함수 이용 - 공부하는 도비
*args의 이름만 쓸 수 있는 것은 아니고 사용자가 원하는 변수 명에다가 *을 붙여주면 됩니다.
아래 예제에서는 *args 대신 *num을 써보았습니다.
def args_fun(*value):
for i, v in enumerate(value):
print("index : {}, value : {}".format (i, v))
args_fun(10, 20, 30, 40)
정리하면, 파이썬의 * 문자는 함수 입력 매개변수가 몇 개 인지 모르고, 리턴 값이 tuple로 될 때 사용됩니다.
또한 ** 처럼 * 문자가 두 개 사용될 때도 있는데, 이건 다음 피드에서 설명하겠습니다.
반응형
'Python > Python Basic' 카테고리의 다른 글
**kwargs 사용과 예제 - 공부하는 도비 (0) | 2022.12.02 |
---|---|
파이썬 type hinting - 공부하는 도비 (0) | 2022.12.02 |
if __name__=='__main__': - 공부하는 도비 (0) | 2022.11.21 |
update()함수로 dictionary 업데이트 하기 - 공부하는 도비 (0) | 2022.11.21 |
버블 정렬 (오름차순 정렬) - 공부하는 도비 (0) | 2022.10.28 |