컴퓨터 공부/💿 Airflow

[Airflow] 파이썬 함수 파라미터 이해

letzgorats 2023. 8. 24. 19:32

함수를 실행시킬 때, 인수 없이 그냥 함수만 실행시키는 것이 아니라, 파이썬 오퍼레이터에도 함수 인수를 주는 것을 이해하려면 먼저 파이썬 함수 파라미터를 어떻게 받는지 이해가 선수되어야 합니다.

 

1. 파이썬 함수 인자 *args

  • args로 들어온 값은 튜플로 저장이 됩니다.
  • args에서 값을 꺼낼 때에는 인덱스를 이용합니다. (ex: args[0], args[1])
  • args라는 이름 외 다른 이름으로 받아도 됩니다.(ex: some_func(*kk):)

2. 파이썬 함수 인자 **kwargs (=keyword arguments)

  • kwargs로 들어온 값은 딕셔너리 형태로 저장이 됩니다.
  • kwargs에서 값을 꺼낼 때에는 get()함수를 이용합니다. (ex: name = kwargs.get('name'))
    • ※ 딕셔너리에서 값을 꺼낼 때, '[ ]'를 사용하는 것보다, get() 함수를 사용하는 것이 안전합니다.
    • 접근하는 키가 딕셔너리에 없다면, '[ ]'를 사용했을 때는, 에러가 나지만, get()을 사용했을 때는, None을 반환해주기 때문입니다.

※ 파이썬 함수 인자, *args, **kwargs를 같이 써도 될까요? - YES !

def register(name, gender, *args, **kwargs):
    print(name)	# allu	
    print(gender)	# male
    print(args)	# (korea, seoul)
    print(kwargs)	# {phone:010,email:'hockey9322@naver.com'}
    

register('allu','male','korea','seoul',phone=010,email='hockey9322@naver.com')

위 예시에서는 

'allu'부터 'seoul'까지는 일반 형태로 인자를 전달했고, 그 이후부터는 key, value 형태로 인자를 줬습니다.

 

처음 두 인자인 'allu'와 'male'은 각각 name과 gender에 할당이 되고,

key_value형태의 인자가 나오기 전까지의 인자인 'korea'와 'seoul'은 모두 *args에 할당이 됩니다.

그리고, key_value 형식으로 넘어온 파라미터들은 다 **kwargs에 할당이 됩니다.

 

요약을 하자면, 파이썬에서 인자를 받는 방식은 총 3가지가 있는데, 

1) 일반 변수형태를 명시적으로 받는 것, 

2) *가 하나 붙어있는 것,

3) **처럼 *가 두 개 붙어있는 변수로 인자를 받을 수 있습니다.

 

파이썬 오퍼레이터를 이용해서 인수를 넘길 때는, *args와 **kwargs 방식을 지원하고 있으므로,

이 두가지 방식으로 함수 인자를 넘겨주는 방식을 공부해볼 필요가 있습니다. 

 

 

 

 

반응형