본문 바로가기
[Language] - Python

# 16. eval

by Bebsae 2021. 8. 2.

eval 함수는 expression (표현식)을 기반으로 동작을 하는 함수이다. expression이 무엇인지 한번 알아보자.

 

eval('1+2')

>>
3

위와 같이 1+2 라는 동작을 문자열로 나타낸 것이 expression이다. 즉, 특정 동작을 나타낸 문자열 단위이다. 다른 expression도 확인해보겠다.

 

eval('len([1, 2, 3, 4])')

>>
4




eval('abs(-90)')

>>
90

다음과 같이 간단한 동작들을 expression을 통해 수행할 수 있다.

 

eval('l = [1, 2, 3]')

>>
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1
    l = [1, 2, 3]

반면 eval을 통한 메모리 할당은 불가능하다. 클래스의 인스턴스로도 실험을 진행해보았지만, 실행되지 않았다.

 

l = [1, 2, 3]
eval('len(l)')

>>
3

그치만, 방심할 수 없다. 이미 메모리에 할당된 오브젝트에 대해서는 접근이 가능하다. 사용자가 eval 함수를 사용하면 프로그램에 대한 자유도를 주는 것이기에 악용할 수도 있는 단점이 있으므로 주의해야 한다.

댓글