Python 오퍼레이터 - 파이썬 함수 파라미터 이해

우상욱·2024년 3월 23일

Airflow Master Class

목록 보기
11/24

파이썬 함수 인자


def regist(name, sex):
    print(name)
    print(sex)

regist('wsw', 'man')
  • 일반적인 함수 인자 작성 방법
  • 하지만, 호출하는 로직에서 몇개의 파라미터를 넘길지 모를 때는?
  • 또는 선택적으로 변수를 받을 수도 있을 때는?(가령 주소, 전화번호)

파이썬 함수 인자, *args


def regist(name, sex, *args):
    print(type(args))
    country = args[0] if len(args) >= 1 else None
    city = args[1] if len(args) >= 2 else None

regist('hjim', 'man')
regist('gdhong', 'man', 'korea', 'seoul')
  • args에 들어온 값은 튜플로 저장된다.
  • args에서 값을 꺼낼 때는 인덱스를 이용한다(ex: args[0], args[1])
  • args라는 이름 외 다른 이름으로 받아도됨(ex: some_func(*kk))

파이썬 함수 인자, **kwargs


def some_func(**kwargs):
    print(type(kwargs))
    print(kwargs)
    name = kwargs.get('name') or ''
    country = kwargs.get('country') or ''
    print(f'name:{name}, country:{country}')
 
 some_func(name='hjkim', country='kr')
  • kwargs에 들어온 값은 딕셔너리로 저장된다.
  • 딕셔너리에서는 dict['name'] 시도 시에 name이라는 키가 없으면 에러를 발생시킵니다.
  • 이 때 dict.get('name')으로 시도하면 name이라는 키가 없을 때 에러가 나지 않고,
  • None이 반환되어 상대적으로 안전합니다.
  • dict.get('name') or ''의 의미는 name이라는 키가 있으면 value를 꺼내오고, 키가 없으면 빈 문자열('')을 받는다는 의미입니다.

파이썬 함수 인자, *args, **kwargs 같이 써도 될까?


가능합니다.

def regist(name, sex, *args, **kwargs):
    print(name)
    print(sex)
    print(args)
    print(kwargs)
 
regist('wsw', 'man', 'korea', 'seoul', phone=010, email='wsw@naver.com')
profile
데이터엔지니어

0개의 댓글