참고 자료
https://docs.python.org/3/library/functions.html
파이썬 버전 3.7 기준
텍스트 실행과 관련된 내장함수
eval(), exec(), complie() 등.
eval(expression, globals=None, locals=None)
○ expression에는 변수가 포함된 표현식(함수, 연산자이용)이 문자열 형태(string, str)로 입력받는다.
▷ 즉, 굳이 표현식을 문자열로 입력하고 싶은 경우에 사용하면 된다.
○ 이 함수는 표현식(expression)의 결과를 반환한다.
▷ 따라서, 식만 입력된다. 즉 'x=4+5'와 같은 문장은 에러를 일으킨다.
▷ 문자열을 파이썬 함수로 치환하는 과정을 거치기 때문에 과도하게 이 함수의 사용하면 코드 실행을 느려지게 할 수 있다.
사용 예)
In[19]: x = eval('5+5')
In[20]: x
Out[20]: 10
In[21]: y = eval('x+5')
In[22]: y
Out[22]: 15
In[23]: eval('1+1')
Out[23]: 2
In[24]: a = 'ex'
In[25]: eval('repr(a)')
Out[25]: "'ex'"
In[26]: eval('rere(a)', {'rere': repr, 'a': 'kk'})
Out[26]: "'kk'"
exec(object[, globals[, locals]])
○ 이 함수는 파이썬 코드를 동적 실행을 지원하게 한다.
▷ 즉, 코드의 한줄을 문자열 혹은 코드로 입력받는다고 생각하면 된다.
사용 예)
In[49]: exec("one=1+9+pow(2,2)")
In[50]: one
Out[50]: 14
In[51]: kk={"pw": pow, 'a': 0}
In[52]: exec("a=pw(3,3)", kk)
In[53]: kk['a']
Out[53]: 27
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
○ source를 코드 또는 AST 객체로 컴파일한다.
▷ source는 일반 문자열, 바이트열 또는 AST 객체가 입력이 가능하다.
▷ 컴파일된 객체는 exec()나 eval()로 실행이 가능하다.
'Python > 파이썬 기초' 카테고리의 다른 글
클래스(class)와 어트리뷰트(attribute)와 관련된 내장함수 - 파이썬 기초(15) (0) | 2018.12.20 |
---|---|
입출력과 관련된 내장함수(print, open, input) - 파이썬 기초(14) (0) | 2018.12.19 |
시퀀스형 자료형과 관련된 내장함수 - 파이썬 기초(12) (0) | 2018.12.17 |
문자열형 자료형과 관련된 내장함수와 포맷팅 - 파이썬 기초(11) (0) | 2018.12.16 |
숫자형 자료형과 관련된 내장함수 - 파이썬 기초(10) (0) | 2018.12.04 |
댓글