[파이썬] 여러 함수 호출하기

조회수 1247회

def a(): print('1')

def b(): print('2')

위 a, b 두 함수가 있다고 할 때

리스트 c = ['a', 'b'] str로 변수가 저장 되어있다고 하면 for문으로 두 함수 a, b 모두 호출 할 수 있는 방법이 있나요?

아니면 다른 방법으로 두 함수 모두 호출할 수 있는 방법이 있을까요?

2 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    파이썬은 함수도 객체입니다. 따라서 변수에 함수를 담을 수 있고, 그대로 사용도 할 수 있습니다.

    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)()
    
    • 질문을 수정할게요. 함수 a,b 가 있고 c = ['a', 'b'] 로 str로 변수가 c에 되어있다면 함수 a,b 를 어떻게 실행할 수 있을지 입니당 ^^ 파이썬 2020.3.14 16:39
  • 하기와 같이 eval 을 사용할 수 있습니다.

    def a(): print('1')
    def b(): print('2')
    
    c = ['a', 'b']
    
    eval('a')()
    1
    
    eval(c[0])()
    1
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)