2014-11-06 3 views
2

importfor을 나중에 사용하면 invalid syntax 오류가 발생합니다. 왜 이런 일이 일어 나는지 나는 모른다.가져 오기 후 For 루프가 파이썬 one-liner에서 작동하지 않습니다.

> python3 -c 'for a in range(1,5): print(a)' 
1 
2 
3 
4 

또는 완전히 for 루프를 제거 :

> python3 -c 'import os; for a in range(1,5): print(a)' 
    File "<string>", line 1 
    import os; for a in range(1,5): print(a) 
       ^

미세 import을 작품을 제거

> python3 -c 'import os; print(10)' 
10 

그래서 무슨 일이야?

답변

5

그것은 오류 : 당신은 PEP 8을 읽을 수있는 파이썬 스타일의 코딩 표준에 대한 자세한 내용은

. 당신이 밖으로 syntax specification for compound statements 선택하면

, 당신은 문 목록은 (당신이 세미콜론으로 만들고있어하는 것은 예)로 정의되는 것을 볼 수 있습니다 :

stmt_list ::= simple_stmt (";" simple_stmt)* [";"]

for 구조는 아니다 simple_stmt이 아니라 compound_stmt입니다.

그러나 print(10)simple_stmt이므로 괜찮습니다.

+0

음, 그게 안타깝 네요. 때때로 한 줄에 모든 것을 넣는 것이 도움이됩니다. – Pithikos

1

파이썬에서는 블럭 열기 문 (예 : for)을 다른 명령문이있는 행에 넣을 수 없다는 것을 알 수 있습니다. 일반적으로 어떤 상황에서는 스크립트 내에서 ;을 사용하면 안됩니다 (파이썬 코드의 명령 실행은 -c). 이것은 유일한 해결책이지만 스크립트 내에서 줄 바꿈 만 사용하면됩니다. 이 파이썬 문법 아니기 때문에 http://legacy.python.org/dev/peps/pep-0008/

관련 문제