Coding/Python Matlab

파이썬 - eval()

smores 2012. 1. 20. 07:37
파이썬이 동적 프로그래밍 언어라고 들었다. Built in function인 eval()이 그러한 특징 때문에 구현 가능한 것인지는 잘 모르겠지만 엄청나게 파워풀함을 알게 되었다.

예전 C/C++ 등을 쓸 때에는 임의의 수식을 스트링 등으로 입력받아 그 수식에 대한 계산을 할려 하면 일일히 lexical analysis 등을 하는 적절한 interpreter를 만들어야 될 것이라 생각하고 포기한 적이 있다. 혹시 내가 C/C++에도 eval() 같은 함수가 있는것 조차 몰랐던가? (아마 unix 등을 쓰면 외부의 lex/parse generator 등을 써서 뭔가 하는 방법이 있긴 한 것 같지만 내 수준 밖의 일이라....)

그런데 파이썬의 eval()은 내가 하고 싶었던 바로 그런 일들을 한줄로 끝내준다 !!!! 세상에 이렇게 편리한 언어가 있다니~~~

다음은 간단한 사용 예제

from math import *

#xs='[v/10. for v in range(0,20)]'
xs=raw_input('input x range : ')
xl=eval(xs)

#fs='sin(x)*cos(x/2)'
fs=raw_input('input function : ')
y=[eval(fs) for x in xl]

print xl
print y