문제

평가 기능이 r n에서 작동하지 않지만 n에서는 작동하지 않습니다. 예를 들어 Eval ( "범위 (5)의 i의 경우 : r n Print 'Hello'")는 작동하지 않음 Eval ( "IN RANGE (5) : n Print 'Hello'")

Replare ( " r", "")를 사용하는 문제의 원인이 없다는 것을 알고 있지만 누군가가 왜 발생하는지 알고 있습니까?

-EDIT-- 오! 죄송합니다. 정확히 exec를 의미했습니다. 캐리지 리턴은 게시물을 통해 HTML TextRea에서 읽고 있기 때문에 나타났습니다 (Linux 상자에 있습니다). 이제 모두 덕분에 더 명확합니다.

도움이 되었습니까?

해결책

"작업"에 대한 이상한 정의가 있습니다.

>>> eval("for i in range(5):\n print 'hello'")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1
    for i in range(5):
      ^
SyntaxError: invalid syntax
>>> 

왜 당신이 사용하고 있는지 잘 모르겠습니다 eval - 나는 당신이 의미한다고 생각합니다 exec. 표현과 진술은 Python에서 크게 다른 엔티티입니다. eval 표현 만 다루는 것만 다룹니다 (표현 ~이다 또한 진술 exec 다른 진술뿐만 아니라 그것을 다룰 수 있습니다).

돌림 exec, 그리고 파이썬 코어 커밋터로서 상황을 숙고하면서, 나는 그것이 작은 잘못 디자인이라고 생각합니다. (중복적이고 쓸모없는) 공간, 탭 및 형태 피드는 새로운 라인이 받아 들여지고 무시되기 직전에 (중복적이고 쓸모없는 것과 마찬가지로 ) 운송 반환이 발생합니다. 죄송합니다 : 누군가가 할 수 있다고 생각한 적이 없다고 생각합니다. 원하다 캐리지 리턴을 넣으려면 그럼에도 저것... 따라서 캐리지 리턴 거부에 대한 이론적 근거가 없습니다 (또는 다른 유니 코드 비 ANSI 공백, 이제 Python 3에서는 식별자에서 임의의 유니 코드 비 ANSI 알파늄 화학을 받아들입니다).

당신이 관심이 있다면, Python의 이슈 추적기에 대한 문제를 열어 주시고 (다른 커밋에 의한 예기치 않은 반대를 제외하고) 나는 Python 3.2에 의해 그것을 해결할 수 있다고 생각합니다 (12 개월에서 18 개월 안에 나가야합니다 - 그것은 [정보가있는 추측입니다. ], 약속이 아닙니다 ;-).

다른 팁

Eval 또는 Exec를 의미합니까? 실행 한 내용과 전체 추적 및 오류 메시지를 정확하게 게시하십시오.

문제는 아마도 파이썬 문법이 라인이 2 자 순서 ' r n'이 아니라 신형 ( ' n')에 의해 종료되었다고 말하기 때문일 것입니다.

일반적으로 어딘가에 의미있는 ' r'이있는 경우 ( ' r n', ' n') 교체 ( ' r n', ' n')를 사용하는 것이 더 안전합니다. 처음에 ' r'이 없다면 더 나을 것입니다 ... 텍스트를 어떻게 얻고 있습니까?

안전에 대해 이야기하면 가능한 적들로부터 얻은 오래된 코드에서 Eval 또는 Exec를 사용하는 데주의해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top