WjExplor Story

*args의 역할 본문

Python/Python : Code Study

*args의 역할

더블유제이플로어 2025. 9. 25. 23:05
Q. 함수 매개변수를 `func(*args)` 로 받으면 복잡해지나?
 A. 'func(*args)' 문법 자체가 복잡한 것은 아니지만,  **어떤 상황에서 사용하느냐에 따라 코드를 더 명확하게 만들 수도 있고, 오히려 복잡하게 만들 수 있다**

`*args`의 역할

 * `*args` 는 함수가 개수가 정해지지 않은 여러 개의 위치 인자(positional arguments)를 받을 때 사용한다.
 만약 함수가 정확히 두 개의 매개 변수를 받아야 한다면,
 def name_func(param1, param2):
 
처럼 매개변수 이름을 명시하는 것이 훨씬 좋다.
 
*args 을 사용하면 가독성 저하 이유로 복잡해지거나 덜 명확해질 수 있다.

* 가독성 저하 : def greet(*args): 라고 하면, args[0] 이 이름이고 args[1] 이 메시지라는 것을 코드 내부를 봐야만 알 수 있다.
def greet(name, msg) : 라고 선언하면 함수 선언만 봐도 어떤 인자를 받는지 명확하다.
*args 는 함수가 받아야 할 인자의 개수가 미리 정해져 있지 않고, 몇 개가 들어올지 모를 때 매우 유용하다.

예제

문제 10. 함수와 기본값
함수를 작성하세요.
이름: greet
매개변수: name, msg="안녕하세요"
출력: "안녕하세요, name!"
def name_func(name, msg='안녕하세요'):
  print(f'{msg}, {name}!')

name_func('철수')
name_func('지은', '반갑습니다')