>  기사  >  백엔드 개발  >  파이썬 함수 컴파일() 함수

파이썬 함수 컴파일() 함수

巴扎黑
巴扎黑원래의
2017-08-18 13:51:003241검색

compile(source, filename, mode[, flags[, dont_inherit]])

중국어 설명: 소스를 코드 또는 AST 개체로 컴파일합니다. 코드 객체는 exec 문을 통해 실행되거나 eval()로 평가될 수 있습니다.

매개변수 소스: 문자열 또는 AST(추상 구문 트리) 개체.

매개변수 파일 이름: 코드 파일 이름, 파일에서 코드를 읽지 못하는 경우 식별 가능한 값을 전달합니다.

매개변수 모델: 컴파일된 코드 유형을 지정합니다. 'exec', 'eval', 'single'로 지정할 수 있습니다.

Parameters 플래그 및 dont_inherit: 이 두 매개변수는 현재 도입되지 않으며 선택적 매개변수입니다.

버전: python2.3, 2.6, 2.7, 3.2에서 다릅니다. 사용할 때 주의하세요. python3

영어 지침과 호환됩니다.:

소스를 코드 또는 AST 개체로 컴파일할 수 있습니다. exec 문으로 실행되거나 eval() 호출로 평가됩니다. 소스는 문자열이거나 AST 개체일 수 있습니다. AST 개체를 사용하는 방법에 대한 자세한 내용은 ast 모듈 문서를 참조하세요.

filename 인수는 다음을 제공해야 합니다. 코드를 읽은 파일. 파일에서 읽지 않은 경우 인식 가능한 값을 전달합니다('98c455a79ddfebb79781bff588e7b37e'이 일반적으로 사용됨).

모드 인수는 컴파일할 수 있는 코드 종류를 지정합니다. 소스가 일련의 명령문으로 구성된 경우 'exec', 단일 표현식으로 구성된 경우 'eval', 단일 대화형 명령문으로 구성된 경우 'single'(후자의 경우 표현식 명령문은 다음 이외의 것으로 평가됨) 아무 것도 인쇄되지 않습니다.

선택적 인수 flags 및 dont_inherit는 어떤 future 문(PEP 236 참조)이 소스 컴파일에 영향을 미치는지 제어합니다. 둘 다 존재하지 않거나 둘 다 0인 경우 코드는 다음과 같은 future 문으로 컴파일됩니다. flags 인수가 주어지고 dont_inherit가 0이 아니면, dont_inherit가 non인 경우에 추가로 flags 인수로 지정된 future 문이 사용됩니다. -0 정수이면 플래그 인수는 다음과 같습니다.

Future 문은 여러 문을 지정하기 위해 함께 비트 OR로 연결될 수 있는 비트로 지정됩니다. __future__ 모듈의 _Feature 인스턴스에 있는compiler_flag 속성에서 찾을 수 있습니다.

이 함수는 컴파일된 소스가 유효하지 않으면 SyntaxError를 발생시키고, 소스에 null 바이트가 포함되어 있으면 TypeError를 발생시킵니다.

참고 여러 줄 코드로 문자열을 컴파일하는 경우 'single' 또는 'eval' 모드에서는 입력이 하나 이상의 개행 문자로 종료되어야 합니다. 이는 코드 모듈에서 불완전하고 완전한 문을 쉽게 감지할 수 있도록 하기 위한 것입니다.

버전 2.3의 변경 사항: 플래그 및 dont_inherit 인수는 다음과 같습니다. 추가되었습니다.

버전 2.6에서 변경됨: AST 개체 컴파일을 지원합니다.

버전 2.7에서 변경됨: Windows 및 Mac 줄바꿈 사용이 허용됩니다. 또한 'exec' 모드에서 입력은 더 이상 줄바꿈으로 끝나지 않아도 됩니다. .

코드 예:

>>> code = "for i in range(0, 10): print i"
>>> cmpcode = compile(code, '', 'exec')
>>> exec cmpcode
0
1
2
3
4
5
6
7
8
9
>>> str = "3 * 4 + 5"
>>> a = compile(str,'','eval')
>>> eval(a)
17

위 내용은 파이썬 함수 컴파일() 함수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.