오늘은 파이썬에서 유용하게 사용되는 *args
에 대해 포스팅하겠습니다.*args
는 'arguments'의 약자로, 함수에 임의의 개수의 인자를 전달할 때 사용하는 파라미터입니다. 이게 무슨 말이냐면, 몇 개의 인자를 받을지 모르는 함수를 만들 때 *args
를 사용하면 된다는 거죠.
*args
의 기본 개념일반적으로 함수를 정의할 때는 특정 개수의 인자를 받도록 설계합니다. 하지만 때로는 미리 인자의 개수를 알 수 없거나, 여러 개의 인자를 한꺼번에 받아 처리해야 하는 경우가 있어요. 이럴 때 *args
를 사용합니다.
*args
를 사용하면 함수는 여러 개의 인자를 튜플 형태로 받아올 수 있어요. 예를 들면 아래와 같이 간단히 사용할 수 있습니다.
def my_function(*args):
for arg in args:
print(arg)
이 함수는 몇 개의 인자를 받을지 정해져 있지 않습니다. *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)한 객체이기 때문에 반복문을 활용해 코드의 반복을 줄일 수 있습니다.