'*args'를 활용한 파이썬 함수 작성

소환인·2023년 10월 10일
0

파이썬

목록 보기
5/8

오늘은 파이썬에서 유용하게 사용되는 *args에 대해 포스팅하겠습니다.*args는 'arguments'의 약자로, 함수에 임의의 개수의 인자를 전달할 때 사용하는 파라미터입니다. 이게 무슨 말이냐면, 몇 개의 인자를 받을지 모르는 함수를 만들 때 *args를 사용하면 된다는 거죠.

*args의 기본 개념

일반적으로 함수를 정의할 때는 특정 개수의 인자를 받도록 설계합니다. 하지만 때로는 미리 인자의 개수를 알 수 없거나, 여러 개의 인자를 한꺼번에 받아 처리해야 하는 경우가 있어요. 이럴 때 *args를 사용합니다.

*args를 사용하면 함수는 여러 개의 인자를 튜플 형태로 받아올 수 있어요. 예를 들면 아래와 같이 간단히 사용할 수 있습니다.

def my_function(*args):
    for arg in args:
        print(arg)

이 함수는 몇 개의 인자를 받을지 정해져 있지 않습니다. *args 덕분에 임의의 개수의 인자를 받아 출력할 수 있습니다.

'*args'를 이용한 실제 코드 예제

이제 이 *args를 어떻게 활용하는지 예제 코드를 통해 설명해 볼게요. 만약 여러 과목의 점수를 입력받아 평균 점수와 각 과목의 합격 여부, 그리고 최종 합격 여부를 판단하는 함수를 작성하고 싶다면 어떻게 할까요? *args를 활용해 코딩할 수 있습니다.

사용한 예제는 '제로베이스 데이터 취업스쿨'의 강의 중 일부를 참고했습니다.

def pass_fail(*args):
    total = sum(args)
    avg = round(total / len(args), 1)
    print(f'총점 : {total}')
    print(f'평균 : {avg}')
    for i in range(len(args)):
        print(f'{args[i]} : {"Pass" if args[i] >= 40 else "Fail"}')

    final_condition = avg >= 60 and all(score >= 40 for score in args)
    print(f'{"Final Pass" if final_condition else "Final Fail"}')


subject_count = 5  # 과목 수

# 과목별 점수 입력
scores_list = [int(input(f'과목{i+1} 점수 입력 : ')) for i in range(subject_count)]

# 함수 호출
pass_fail(*scores_list)

코드를 보면, pass_fail 함수가 *args를 사용해 여러 개의 인자를 받고 있습니다. scores_list는 과목별 점수들을 담고 있는 리스트입니다. 리스트에 담긴 점수들을 '*'를 이용해서 언패킹합니다. *args를 사용해 정의한 'pass_fail' 함수를 통해 총점, 평균, 각 과목의 합격/불합격 여부, 그리고 최종 합격 여부까지 판단하고 출력하고 있습니다.

마무리

*args는 함수에 유연성을 더해줍니다. 인자의 개수에 구애받지 않고 함수를 설계할 수 있어서 함수의 확장과 수정에 용이합니다. 위의 예제에서 과목의 수를 늘리려면 subject_count 변수의 값만 수정하면 과목 수를 원하는대로 수정할 수 있습니다. 또한, 반복가능(iterable)한 객체이기 때문에 반복문을 활용해 코드의 반복을 줄일 수 있습니다.

profile
돌고돌아

0개의 댓글