본문 바로가기
프로그램

[파이썬] 문자열로 된 코드를 실행하는 방법(eval, exec, compile)

by 오디세이99 2022. 9. 14.
728x90
반응형

문자열로 'a = 1 + 2'와 같이 되어 있을 때 실행하는 방법입니다.

재미있는 기능입니다.

 

3가지 방법이 있습니다.

1)  eval

2) exec

3) compile

 

1) eval : 1 줄로 된 코드만 실행

def func():
    print('Ok!!!')

func_str = 'func()'   # 함수가 문자열로 되어 있습니다
    
eval(func_str)        # 문자열로 된 코드를 실행합니다

 

2) exec : 여러 줄로 된 코드 실행

func_str2 = '''
for i in range(3):
    print(i)
'''

eval(func_str2)

 

3) compile : eval, exec는 문자열을 코드로 변환 후 실행하여 리소스를 많이 소모. compile은 문자열을 코드로 변환해두고 다시 사용할 수 있음.

func_str2 = '''
for i in range(3):
    print(i)
'''

python_code = compile(func_str2, '<string>', 'exec')   # 실행문장,filename 없으면 '<string>', single / eval / exec

exec(python_code)

 

 

728x90
반응형

댓글