함수를 실행시킬 때, 인수 없이 그냥 함수만 실행시키는 것이 아니라, 파이썬 오퍼레이터에도 함수 인수를 주는 것을 이해하려면 먼저 파이썬 함수 파라미터를 어떻게 받는지 이해가 선수되어야 합니다.
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 방식을 지원하고 있으므로,
이 두가지 방식으로 함수 인자를 넘겨주는 방식을 공부해볼 필요가 있습니다.
반응형
'컴퓨터 공부 > 💿 Airflow' 카테고리의 다른 글
[Airflow] Python Operator에 op_kwargs로 변수 할당하기 (0) | 2023.08.25 |
---|---|
[Airflow] Python Operator에 op_args로 변수 할당하기 (0) | 2023.08.25 |
[Airflow] @task 데코레이터 사용하기 (2) | 2023.08.24 |
[Airflow] 외부 파이썬 함수 수행하기 (2) | 2023.08.23 |
[Airflow] Python operator 기본 (0) | 2023.08.20 |