[파이썬] 여러 함수 호출하기
조회수 1247회
def a(): print('1')
def b(): print('2')
위 a, b 두 함수가 있다고 할 때
리스트 c = ['a', 'b'] str로 변수가 저장 되어있다고 하면 for문으로 두 함수 a, b 모두 호출 할 수 있는 방법이 있나요?
아니면 다른 방법으로 두 함수 모두 호출할 수 있는 방법이 있을까요?
2 답변
-
파이썬은 함수도 객체입니다. 따라서 변수에 함수를 담을 수 있고, 그대로 사용도 할 수 있습니다.
def a(): print('1') def b(): print('2') c = [a, b] for cb in c: cb()
질문 수정사항에 대한 답변입니다.
함수의 객체가 아닌 함수의 이름만 가지고 있을 경우의 호출 방법은 두 가지로 나눌 수 있습니다.
같은 모듈의 함수를 불러올 경우
globals
내장함수를 이용합니다. 현재 모듈의 전역 심볼 테이블을 딕셔너리로 가지고 옵니다.def a(): print('1') def b(): print('2') c = ['a', 'b'] for cb_name in c: globals()[cb_name]()
다른 모듈의 함수를 불러올 경우
getattr
를 이용합니다.# utils.py def a(): print('1') def b(): print('2')
import utils c = ['a', 'b'] for cb_name in c: getattr(utils, cb_name)()
-
하기와 같이 eval 을 사용할 수 있습니다.
def a(): print('1') def b(): print('2') c = ['a', 'b'] eval('a')() 1 eval(c[0])() 1
댓글 입력