본문으로 바로가기
728x90

eval()

문자열로된 식을 인자로 받아 실행하는 기능을 하는 내장함수

a = 10
code = '''
a+20
'''

print(eval(code))

 

exec()

문자열로된 코드를 인자로 받아 실행하는 기능을 하는 내장함수

a = 10
code = '''
b = a+20
'''

exec(code)
print(b)

 

eval() exec() 비교

대입문이 있어서 오류 발생

a = 10
code = '''
b = a+20
'''

eval(code)
더보기
b = a+20 
      ^ 
SyntaxError: invalid syntax

 

compile()

문자열로된 코드를 인수로 받아 AST 객체로 컴파일하는 내장함수 (eval() 또는 exec()로 실행가능)

code = '''
n1 = 100
n2 = 200
print('n1 + n2 =', n1 + n2)
'''

c = compile(code, '<string>', 'exec')
exec(c)
print(n1, n2)

code = '10 + 20'

c = compile(code, '<string>', 'eval')
print(eval(c))
더보기
n1 + n2 = 300
100 200
30