Program Language/Python

파이썬 공부(eval exec compile 함수)

Jinlib 2014. 3. 18. 20:18

001 eval()함수(expression[, globals=None[, locals=None]])

# 여기서 global은 전역 영역의 사전이고, 인수 local은 지역 영역의 사전이다

-내장함수, 파이썬 식을 인수로 받아 파이썬 컴파일 코드로 변환한다

>>> a = 1

>>> a = eval('a + 4 ')

>>> a

5

 

002 exec() 함수(object[, globals[, locals]])

-내장함수, 문자열로 표현된 문을 인수로 받아서 파이썬 컴파일 코드로 변환

>>> s = '''

a=1

if a > 0:

print('Success')

'''

>>> exec(s)

Success

 

003 compile() 함수 (string, filename, mode)

- string은 코드 문자열,

- filename은 파일이면 파일명을 파일이 아니면 <string>사용

- mode는 어떤 종류의 코드가 컴파일 되야하는지 말함

#mode엔 3가지모드 single은 하나의 문, eval은 하나의 식, exec은 여러개의 문 

-내장함수, 문자열로 표현된 코드를 분석해서 파이썬 컴파일 코드로 변환

  • mode : eval ->하나의 식을 컴파일
    >>>code = compile('a+1', '<string>', 'eval')
    >>>a =1
    >>>a = eval(code)
    >>>print(a)
    2

  • mode : single -> 하나의 문을 컴파일
    >>>code = compile('a=a+1', '<string>','single')
    >>>a=1
    >>>esec(code)
    >>>print(a)
    2

  • mode : exec - > 여러개의 문을 컴파일
    >>>s = '''
    a = 1
    for k in range(10)
         a = a +1
    print(a)
    '''
    >>>code = compile(s, '<string>', 'exec')
    >>>exec(code)
    11

  • 소스 코드 파일을 읽어서 실행하는 예시
    # compile_src.py
    a = 1
    for k in range(10):
         a = a+1
    print(a)
    라는 compile_src.py라는 파일이 있다고 치자
    위의 파일을 실행하는 코드는 다음과 같다

    >>>s = open('compile_src.py').read() # 파일 내용을 읽어 들인다.
    >>>code = compile(s, 'compile_src.py', 'exec')
    >>>exec(code)
    11

 

'Program Language > Python' 카테고리의 다른 글

파이썬 에러 모음  (0) 2017.01.31
파이썬 공부(문자열  (0) 2014.04.03
파이썬 공부(input print format 함수)  (0) 2014.04.03
01 turtle 모듈  (0) 2014.03.18