티스토리 뷰

파이썬에서의 eval()과 exec()의 개념과 예제에 대해 알아보고자 한다.

<목차>
 - eval()과 exec()의 개념
 - eval() 함수
 - exec() 함수
 - eval()과 exec()의 차이점

eval()과 exec()의 개념

eval()과 exec() 함수파이썬의 내장 함수로, 문자열로 표현된 파이썬 코드 실행할 때 사용한다.

 

  • eval() : 문자열로 구성된 을 인수로 받아 파이썬 컴파일 코드로 변환하여 실행
  • exec(): 문자열로 구선된 을 인수로 받아 파이썬 컴파일 코드로 변환하여 실행

 


 

eval() 함수

evalute의 약자로, 말 그대로 값을 구하는 함수이다. [더 공부하기]

 

문자열 을 받아 수행한다.

print(eval("2+3+4")) # 9

 

코드 내에 변수들의 값을 받아 수행도 가능하다.

a = 10
a = eval("a + 1")
print(a) # 11

 

 

그러나, eval() 함수만 처리하기 때문에 을 인수로 받으면 SyntaxError가 발생한다.

즉, 식만 처리하므로 변수 선언 및 할당과 같은 것은 할 수 없다.

a = 10
eval(" a = a + 1")  # SyntaxError

 


exec() 함수

execuate의 약자로, 말 그대로 실행하는 함수이다.

 

문자열 을 수행한다.

 

코드를 받아들여 수행하므로

변수 선언이나 할당 등을 할 수 있다.

a = 10
exec("a = a + 1")
print(a) # 11

 

그리고 그 외에 문자열을 받아 컴파일 코드로 변환하여 실행가능하다.

exec("print(2+3+4);") # 9

 

a=1
b=2
exec("print(a,'+',b,'=',a+b);a+=1;b+=1;"*3)
# 1 + 2 = 3
# 2 + 3 = 5
# 3 + 4 = 7

 

eval()과 exec()의 차이점

결과값 반환에 대한 차이점이 있다.

 

eval() 함수값을 반환하는 함수이지만,

exec() 함수값을 반환하지 않는 함수이다.

 

아래 예시를 수행해보면,

exec()는 아무 값도 보여주지 않는다. 그냥 a+1 수행하고 끝내버린 것이다.

a = 10
print(exec("a + 1"))  # None
print(eval("a + 1"))  # 11

 

 

만약, 값을 확인하고 싶다면, 새로운 변수를 선언해서 결과 값을 받도록 해야한다.

수행한 결과 값을 확인하는 방식에 대한 두 함수의 차이는 다음과 같다.

a = 10

exec('x = a + 1')
print(x) # 11

x = eval('a + 1')
print(x) # 11

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함