2014-12-09 2 views
3
없이

내가 가진 소스 파일 (DEF 선 후 더 들여 쓰기가 존재하지 않는다) 형식으로 다음과 같은 여러 번이 있습니다 파이썬 정의 :들여 쓰기

def sendSystemParms2(self, destAddress, subid, state): 

raw = sysparms_format2.build(Container(
length = 0x0D, 
command = MT_APP_MSG_CMD0)) 

def method2(parm2): 
print parm2 

하고 작업을 실행합니다. 나는 혼란 스럽다. 어떤 힌트? 이미지가 새롭고 평판이 충분하지 않아 업로드 할 수 없지만 그 증거를 보여줄 수는 있습니다.

+5

이러한 메서드는 클래스 내에 있습니까? 탭 크기를 8로 조정 해 보셨습니까? –

+3

'.pyc' 파일이나'__pycache__' 폴더를 지워보십시오. 파이썬이 캐시 된 버전의 모듈을로드하고있을 수도 있습니다. – Dunes

+2

많은 편집자 (Atom, PyCharm, Brackets 등)는 '공백 표시'옵션을 가지고있어 인쇄 할 수없는 문자 대신 인쇄 가능한 문자를 제공합니다. –

답변

9

탭과 공백이 혼합 된 파일이 있습니다.

파이썬은 팔 공간에 탭을 확장,하지만 당신은 네 개의 공간의 탭 위치 크기를 사용하는 편집기에서 파일을 찾고 있습니다.

함수 본문은 들여 쓰기에 탭을 사용하지만 행 def은 4 개의 공백을 대신 사용합니다. 파이썬이 염려하는 한, 메소드 본문은 정확하게 들여 쓰기되어 있습니다. 나는 8 개 공간의 크기 탭을 사용하여 내 텍스트 편집기를 설정 한 다음 에디터 하이라이트 탭을 가지고 텍스트를 선택하면

, 나는 참조 :

source code with indentation highlighted

선이 탭을 표시 .

들여 쓰기에 탭을 사용하지 않아야하는 이유 중 하나가 입니다.입니다. Python style guide은 들여 쓰기에 공백 만 사용하는 것이 좋습니다. 파이썬 3에서는 이와 같이 탭과 스페이스를 섞는 것이 구문 오류입니다.

당신은 -tt command line switch 파이썬을 실행하여,뿐만 아니라 탭과 공간의 혼합에 대한 TabError을 높이기 위해 파이썬 2를 알 수 있습니다 :

-t
문제 경고를 소스 파일에 대한 탭과 공백을 혼합 할 때 들여 쓰기는 공백으로 표현 된 탭의 가치에 의존하게합니다. 옵션을 두 번 지정하면 오류가 발생합니다 (-tt).

+2

파이썬 2에서 인터프리터에'-tt'를 넘기는 것은 불법입니다. 이것은 대부분의 상황에서 좋은 아이디어 일 것입니다. – Kevin

+0

@ 케빈 : 참으로; 그 옵션에 대한 포인터를 추가했습니다. –

+1

이 공정하다고 판단되면이 특정 오류는 실제로 탭 위에 공백을 사용해야한다는 것을 의미하지 않으며 그 반대의 경우에도 일관성이 있어야한다는 의미입니다. (fwiw, 나는 공백을 사용한다 ...) – acushner

관련 문제