728x90
반응형
*args와 **kwargs의 개념 정리: [Python] 파이썬 함수 파라미터 *args와 **kwargs
op_args
파이썬 오퍼레이터를 사용해 파이썬 함수를 실행시킬 경우 해당 함수의 파라미터는 op_args를 통해 전달한다.
as dag:
def regist(name, sex):
print(f'이름은 {name}이고 성별은 {sex}입니다.')
py_task_1 = PythonOperator(
task_id = 'py_task_1',
python_callable=regist,
op_args = ['minding', 'man'] # 리스트 형태로 작성
py_task_1 = PythonOperator( # *args가 있을 경우
task_id = 'py_task_1',
python_callable=regist,
op_args = ['minding', 'man', 'abcd@naver.com'] # 리스트 형태로 작성
기본적으로 인자는 리스트 형태로 전달되며, *args가 있는 경우에도 그대로 리스트에 값을 추가해주면 된다.
task 데코레이터를 사용하는 경우 일반 함수 인자를 넣듯이 사용해도 된다.
with DAG(
dag_id = 'dags_python_with_op_args',
schedule = None,
start_date = pendulum.datetime(2024, 7, 1, tz="Asia/Seoul"),
catchup = False,
tags=["practice"]
) as dag:
py_task_1 = regist('minding', 'man', 'kr', 'seoul')
op_kwargs
as dag:
def regist(name, sex, **kwargs):
print(f'이름은 {name}이고 성별은 {sex}입니다.')
print(kwargs)
py_task_1 = PythonOperator(
task_id = 'py_task_1',
python_callable=regist,
op_kwargs = {'name':'minding', 'sex':'man'} # 딕셔너리 형태로 작성
py_task_1 = PythonOperator( # *kwargs가 있을 경우
task_id = 'py_task_1',
python_callable=regist,
op_kwargs = {'name':'minding', 'sex':'man', 'country':'kr', 'email':'abc123@yahoo.co.kr'} # 딕셔너리 형태로 작성
기본적으로 인자는 딕셔너리 형태로 전달되며, *args가 있는 경우에도 그대로 딕셔너리에 값을 추가해주면 된다.
op_args와 op_kwargs 모두 사용하는 경우
def regist2(name, sex, *args, **kwargs):
print(f'이름: {name}')
print(f'성별: {sex}')
print(f'기타옵션들: {args}')
email = kwargs['email'] or None
phone = kwargs['phone'] or None
if email:
print(email)
if phone:
print(phone)
with DAG(
dag_id = 'dags_python_with_op_kwargs',
schedule = None,
start_date = pendulum.datetime(2024, 7, 1, tz="Asia/Seoul"),
catchup = False,
tags=["practice"]
) as dag:
regist2_t1 = PythonOperator(
task_id = 'regist2_t1',
python_callable = regist2,
op_args = ['minding', 'man', 'kr', 'seoul'],
op_kwargs = {'email':'tlsfk48@gmail.com', 'phone':'01011112222'}
)
regist2_t1
op_args와 op_kwargs 모두 사용할 수 있다. op_args에 키 값이 필요없는 인자를 리스트 형태로 넣고, op_kwargs에 키 값이 필요한 인자들을 딕셔너리 형태로 넣어주면 된다.
728x90
'Minding's Programming > Airflow' 카테고리의 다른 글
[Airflow] Airflow의 날짜 개념 (0) | 2024.07.23 |
---|---|
[Python/Jinja/Airflow] Jinja 템플릿과 Airflow에서의 사용방법 (2) | 2024.07.22 |
[Python] 파이썬 함수 파라미터 *args와 **kwargs (0) | 2024.07.22 |
[Airflow] Python Operator 사용과 Python Decorator (0) | 2024.07.22 |
[Airflow] Email 오퍼레이터 사용해보기 (Gmail 서버 사용) (0) | 2024.07.19 |