본문 바로가기

파이썬/사용법

[python] 함수 파라미터 설정하는 방법 정리 [2]

안녕하세요!

이번 글에서는 파이썬에서 함수 파라미터를 설정하는 방법에 대해서 알아보려고 합니다.

 

1) Arbitrary Argument Lists

2) Unpacking Argument Lists

 

순으로 알아보겠습니다.


1) Arbitrary Argument Lists

직역하면 임의 인수 목록입니다.

파이썬 레퍼런스를 천천히 읽어보면 arbitrary number of arguments라고 하는 것을 볼 수 있는데요

인자 개수를 여러 개 받을 수 있습니다.

def addall(*args,result = 0):
  for num in args:
    result += num
  print(type(args))    
  return result

print(addall(1,2,3,4,5,6,7,8,8,8,8,8,8))

# 76
# <class 'tuple'>

 

변수명 앞에 *를 붙이면 가변인자인 것을 의미하며 튜플로 인식합니다.

보통 가변인자를 제일 뒤에 쓰는 것을 많이 볼 수 있는데  

가변인자 뒤에 인자를 또 받으려면 키워드로만 받을 수 있습니다.
positional arguments -> arbitrary argument list -> keyword arguments

 

2) Unpacking Argument Lists

직역하면 인수 목록을 풀기입니다.

print(list(range(3, 6)))            # normal call with separate arguments
args = [3, 6]
print(list(range(*args))  )          # call with arguments unpacked from a list


# [3, 4, 5]
# [3, 4, 5]

range처럼 start, end, 인자가 필수 적인 것들은 값을 하나하나 풀어서 전달해야 합니다.

값을 풀어서 전달해야 할 때 리스트나 튜플 앞에 *을 붙여주면 하나하나 풀어서 전달한다는 맥락 같습니다.

 

비슷한 맥락에서 딕셔너리 자료형도 키워드 인자로써 전달할 수 있습니다.

딕셔너리는 앞에 ** 붙여주셔야 합니다.

def printdict(**person_info):
  for key,value in person_info.items():
    print(key,value)


printdict(**gildongs_info)

# name 홍길동
# age 17
# city daegu

 


정리)

1) Arbitrary Argument Lists

  임의의 인자 개수 

  가변 인자?

  아무튼 인자 여러 개 받을 수 있다.

  인자 앞에 * 붙여라.

  인자는 튜플로 wrap 된다.

 

2) Unpacking Argument Lists

인자를   풀어서 전달해야 하는 경우

앞에 * 붙여서 전달해라.

딕셔너리 자료형은 **붙여서 전달해라.

In the same fashion, dictionaries can deliver keyword arguments with the **-operator:

이런 식으로 만 나와있어서 실험을 더 해봐야 할 것 같다.

마치면서)

파이썬 공식 문서에서 파이썬 Special parameters로 예제를 찾아보시면 더욱 자세한 정보를 얻을 수 있습니다. 

다음 글에서도 유용한 파이썬 팁과 기능을 소개하도록 하겠습니다

감사합니다.