Python/Python Basic

*args 사용과 예제 - 공부하는 도비

DOVISH WISDOM 2022. 12. 2. 17:05  
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 함수 이용 - 공부하는 도비

 

[파이썬] 파이썬 Tuple(튜플), index(), count(), in 함수 이용 - 공부하는 도비

파이썬 타입은 크게 '숫자(number), 순서 열(sequence), 매핑(mapping), 집합(set)'으로 구분할 수 있습니다. 오늘은 순서 열 중 Tuple(튜플)에 관해서 정리해보려고 합니다. 또한, 튜플과 연관 지어 index(), cou

yang-wistory1009.tistory.com

 

*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로 될 때 사용됩니다. 

 

또한 ** 처럼 * 문자가 두 개 사용될 때도 있는데, 이건 다음 피드에서 설명하겠습니다. 

반응형