개요
Python에서는 표준 라이브러리인 inspect 모듈을 활용하면 함수의 인수(매개변수) 이름을 손쉽게 가져올 수 있습니다. 여기에 리스트 컴프리헨션과 문자열의 lower() 메서드를 조합하면, 대문자가 포함된 모든 함수 인수를 한 번에 소문자로 변환할 수 있습니다.
예제 코드
# 함수 인수 목록을 소문자로 출력하는 프로그램
import inspect
def foo(ARG1, ARG2):
pass
list1 = inspect.getfullargspec(foo)[0] # 함수의 인수 이름 목록 가져오기
list1 = [item.lower() for item in list1] # 각 항목을 소문자로 변환
print(list1)실행 결과
['arg1', 'arg2']
코드 설명
inspect.getfullargspec()은 함수의 인수 관련 정보를 담은 객체를 반환하며, 그중 첫 번째 요소에는 인수 이름들이 리스트 형태로 저장되어 있습니다. 위 예제에서는 foo 함수의 인수인 ARG1과 ARG2가 ['ARG1', 'ARG2']라는 리스트로 추출됩니다.
이후 리스트 컴프리헨션 [item.lower() for item in list1]을 통해 리스트의 각 요소에 lower() 메서드를 적용하면, 모든 인수 이름이 소문자로 변환된 ['arg1', 'arg2']를 얻을 수 있습니다.
참고 사항
구버전 코드에서 자주 사용되던 inspect.getargspec()은 Python 3에서 더 이상 권장되지 않으며(deprecated), Python 3.11부터는 완전히 제거되었습니다. 따라서 최신 Python 환경에서는 위 예제처럼 inspect.getfullargspec()을 사용하는 것이 안전합니다. 또한 Python 2 방식의 print list1 문법이 아닌, 함수 호출 형태인 print(list1)을 사용해야 합니다.