codeop
— Compile Python code¶
소스 코드: Lib/codeop.py
codeop
모듈은 code
모듈에서와같이 파이썬 읽기-평가-인쇄 루프를 에뮬레이트 할 수 있는 유틸리티를 제공합니다. 결과적으로, 모듈을 직접 사용하고 싶지 않을 것입니다; 여러분의 프로그램에 이러한 루프를 포함 시키려면 대신 code
모듈을 사용하는 것이 좋습니다.
이 작업에는 두 가지 부분이 있습니다:
Being able to tell if a line of input completes a Python statement: in short, telling whether to print ‘
>>>
’ or ‘...
’ next.Remembering which future statements the user has entered, so subsequent input can be compiled with these in effect.
codeop
모듈은 이들을 각각 수행하는 방법과 이들을 모두 수행하는 방법을 제공합니다.
단지 전자를 수행하려면:
- codeop.compile_command(source, filename='<input>', symbol='single')¶
Tries to compile source, which should be a string of Python code and return a code object if source is valid Python code. In that case, the filename attribute of the code object will be filename, which defaults to
'<input>'
. ReturnsNone
if source is not valid Python code, but is a prefix of valid Python code.source에 문제가 있으면, 예외가 발생합니다. 유효하지 않은 파이썬 구문이 있으면
SyntaxError
가 발생하고, 유효하지 않은 리터럴이 있으면OverflowError
나ValueError
가 발생합니다.The symbol argument determines whether source is compiled as a statement (
'single'
, the default), as a sequence of statement ('exec'
) or as an expression ('eval'
). Any other value will causeValueError
to be raised.참고
구문 분석기가 source의 끝에 도달하기 전에 성공적인 결과로 구문 분석을 중지하는 것이 가능합니다 (하지만 대체로 그렇지 않습니다); 이 경우, 뒤따르는 기호는 에러를 유발하는 대신 무시 될 수 있습니다. 예를 들어, 백 슬래시 뒤에 두 개의 개행이 오면 그 뒤에 임의의 가비지가 올 수 있습니다. 구문 분석기를 위한 API가 개선되면 이 문제가 해결될 것입니다.
- class codeop.Compile¶
Instances of this class have
__call__()
methods identical in signature to the built-in functioncompile()
, but with the difference that if the instance compiles program text containing a__future__
statement, the instance ‘remembers’ and compiles all subsequent program texts with the statement in force.
- class codeop.CommandCompiler¶
Instances of this class have
__call__()
methods identical in signature tocompile_command()
; the difference is that if the instance compiles program text containing a__future__
statement, the instance ‘remembers’ and compiles all subsequent program texts with the statement in force.