가끔 문제를 풀다 보면 풀이에 eval과 exec가 많이 보인다. 이것들은 뭘까?
eval과 exec 함수는 파이썬의 내장함수다. 문자열로 이루어진 식 또는 문을 파이썬 코드로 실행할 때 사용한다.
eval은 문자열로 구성된 식을 처리한다.
print(eval("1 + 2"))
#3
a = 1
print(eval("a+2"))
#3
x = eval("a+2")
print(x)
위와 같이 식 안의 것들을 처리하고 식만 처리함으로 안에서의 변수 선언 및 할당은 할 수 없다. 그리고 코드 내에 변수들의 값도 받아서 식을 처리할 수 있다. 결괏값이 나오기 때문에 변수에 담아서 사용할 수도 있다.
exec는 문으로 구성된 파이썬 코드를 실행한다.
a = 1
print(exec("1 + 2")) #None
print(exec("a+2")) #None
print(exec("x=1 + 2")) #None
print(exec("y=a+2")) #None
print(x) #3
print(y) #3
z = exec("a=1+2")
print(z) #None
exec는 식만으로 이루어진 문자열은 인식하지 않는다. 그리고 코드를 수행하기만 하지 결과를 반환하지 않는다. 따로 출력하려면 변수를 선언해 줘야 한다. 수행하기만 해서 따로 변수에 담을 수 없다.
읽어주셔서 감사합니다.