파이썬 내장 함수 - compile
compilecompile(source, filename, mode[, flags[, dont_inherit,[optimize]]])
1. 문자열의 소스코드를 컴파일하고 그 결과로 바이트코드나 AST(Abstract Syntax Tree)를 생성할 수 있습니다.
바이트코드는 exec() 함수를 이용해 실행할 수 있고, AST는 eval()을 이용해 컴파일할 수 있습니다.
2. 매개변수 소스는 문자열의 소스 코드 또는 AST 개체의 배열입니다.
3. 매개변수 filename은 문자열을 읽기 위한 파일 개체입니다.
컴파일을 위해 파일에서 소스 코드를 읽지 않는 경우 이러한 코드를 식별하는 데 사용되는 일부 문자열이 여기에 배치될 수 있습니다.
4. 매개변수 mode는 표현되는 소스 코드의 유형을 나타내는 데 사용됩니다.
exec 유형인 경우 실행 가능한 시퀀스 명령문임을 의미합니다.
eval인 경우 유형이면 단일 명령문임을 의미합니다. 표현식 문을 사용하여 해당 값을 계산할 수 있습니다.
단일 유형인 경우 대화형 모드에서 실행되는 단일 명령문임을 의미합니다.
이 경우 표현식인 경우 일반적으로 None으로 인쇄하지 않고 결과를 출력합니다.
5. 선택적 매개변수인 flags와 dont_inherit는 소스 코드를 컴파일할 때 플래그를 제어하는 데 사용됩니다.
이러한 매개변수와 관련 컴파일 지침에 대해 알아보려면 PEP236 문서를 확인하세요.
둘 다 기본 매개변수를 사용하는 경우(즉, 둘 다 0 값인 경우)
컴파일을 위해 이 함수를 호출할 때 주로 코드에 지정된 컴파일 기능을 사용하여 처리됩니다.
플래그 매개변수가 다음과 같은 경우; 값으로 설정하고 dont_inherit가 설정되지 않은 경우(즉, 값이 0임)
코드를 컴파일할 때 소스 코드의 컴파일 기능뿐만 아니라 플래그로 지정된 기능도 작동합니다.
매개변수 dont_inherit가 값(즉, 0이 아닌 값)을 갖도록 설정된 경우
명령문을 컴파일할 때 지정된 컴파일 기능 값만 사용됩니다. 매개변수 플래그에 의해 적용됩니다. 즉, 소스 코드에 지정된 기능이 사용되지 않습니다.
컴파일 기능은 비트맵 형식의 매개변수로 설정되어 있으며 __future__에서 볼 수 있습니다.
6. 선택적 매개변수인 최적화는 컴파일러가 사용하는 최적화 수준을 나타내는 데 사용됩니다.
기본값은 -1이며, 이는 명령줄 매개변수 -O에서 얻은 최적화 수준이 우선함을 의미합니다. 🎜>설정된 경우 값은 0입니다(즉, 최적화가 필요하지 않으며 __debug__가 true로 설정됨). 이는 최적화가 없음을 의미합니다.
값이 1로 설정된 경우 Assert 문이 삭제되고 __debug__ false로 설정됩니다.
값을 2로 설정하면 1로 설정된 기능 외에도 최상의 최적화 결과를 얻기 위해 코드의 문서도 삭제됩니다.
7. 이 함수는 코드를 컴파일할 때 구문 오류가 있으면 SyntaxError를 반환합니다.
코드에 일부 null 바이트가 포함되어 있으면 TypeError가 반환됩니다.
참고:
1. Single 또는 eval 유형으로 컴파일하는 경우
코드 줄이 여러 개인 경우 각 코드 줄 뒤에 최소한 한 줄 바꿈이 있어야 합니다. 그렇지 않으면 컴파일 시 컴파일 메시지가 표시됩니다. 코드 모듈 소스 코드가 불완전한 오류입니다.
Python 3.2 버전 이후에는 Windows 또는 Mac의 줄바꿈 문자를 입력할 수 있습니다.
2. exec 모드를 사용하는 경우 이 버전 이후에는 각 줄 뒤에 줄바꿈 문자를 입력할 필요가 없습니다. 추가됩니다.
In [16]: str = "for i in range(10): print(i)" In [17]: c = compile(str,'','exec') #编译为字节代码对象 In [18]: exec(c) 0 1 2 3 4 5 6 7 8 9 In [19]: str = "3*x + 4*y" In [20]: c = compile(str,'','eval') #编译为表达式 In [23]: x,y = 3,4 In [24]: eval(c) Out[24]: 25위는 Python 내장 function-compile 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!