Python 코드로 작업할 때 eval 함수를 사용하여 동적으로 평가되는 코드 내에서 구문 오류가 발생하는 상황이 발생할 수 있습니다. . 이러한 오류를 포착할 수는 있지만 소스 코드 자체의 구문 오류는 그렇지 않습니다.
이 동작을 이해하려면 다음 사항을 기억하는 것이 중요합니다. Python의 실행 순서. 코드가 실행되면 Python 컴파일러는 먼저 코드를 구문 분석하고 컴파일하여 바이트코드를 생성합니다. 그런 다음 이 바이트코드는 Python 가상 머신(PVM)에 의해 해석됩니다.
소스 코드에 구문 오류가 있는 경우 컴파일러는 오류를 발견하고 컴파일 프로세스를 중지합니다. 결과적으로 코드에 정의된 try/exc 블록은 작동하지 않습니다.
그러나 eval을 사용할 때 eval 문 내의 코드는 주변 코드의 첫 번째 컴파일 이후 별도로 컴파일됩니다. 이는 두 번째 컴파일 실행 중에 eval 문 내의 구문 오류가 발생함을 의미합니다. try/exc 블록은 첫 번째 컴파일 중에 이미 설정되었으므로 eval'd 코드에서 발생한 구문 오류를 포착할 수 있습니다.
소스 코드는 실망스러울 수 있습니다. 그러나 이는 Python 구현의 본질적인 한계입니다. 컴파일러는 시도/제외 메커니즘이 활성화되기 전에 첫 번째 실행을 완료해야 합니다.
소스 코드의 구문 오류를 처리하려면 컴파일 프로세스를 여러 번 트리거하는 방법을 찾아야 합니다. 이는 다음과 같은 기술을 사용하여 달성할 수 있습니다.
위 내용은 eval\'d 코드에서는 구문 오류를 찾을 수 있지만 소스 코드에서는 찾을 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!