나는 임시적으로 null을 전달하려고 시도하고있었습니다. eval
은 아무 것도하지 않았습니다. (주문을 보존하는 것이 내 해킹 프로필 스크립트에 중요했기 때문에 제거하지 못했습니다.) 그리고 제가 준 후 다소 미안했습니다. 'pass'
빈 문자열이나 이와 동등한 do-nothing 문과 함께 나에게 버려졌다.왜 eval ('pass')이 SyntaxError입니까?
>>> eval('pass')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1
pass
^
SyntaxError: unexpected EOF while parsing
나는 결국 그냥 None
공급하지만, 왜 구문 오류인가? "예기치 않은 EOF"가 나를 곤혹스럽게합니다. 그 문자열은 그 자체로 완전한 진술입니다. eval
은 키워드를 허용하지 않습니까?
'eval' 키워드 용인'평가를 (' lambda x : x ')'는 완벽하게 유효합니다. –
'exec ('pass')'가 유효하다는 것에주의하십시오. 'exec'와'eval'의 차이점을 기억하는 방법은 무언가를 반환하는 것 ('None'을 포함하여)에'eval'을 사용하는 것입니다. 아무것도 반환하지 않는 경우에는'exec'을 사용합니다. 좋은 예제는 http://stackoverflow.com/questions/2220699/whats-the-difference-between-eval-exec-and-compile-in-python을 참조하십시오. – korylprince
'pass'는 표현식이 아니므로 명령문입니다. 따라서'eval()'대신'exec()'을 사용하거나'eval()'에 표현식을 부여하십시오. '없음'은 표현식입니다. – martineau