어쩌면 나는 이것에 혼자 있지만 탭 대신 공백을 사용하여 들여 쓰는 사람들을 괴롭히는 것은 거의 없습니다. 타이핑 SpaceSpaceSpaceSpace보다 타이핑이 더 쉽고 직관적 Tab입니까? 물론 탭 너비는 가변적이지만 공백보다 들여 쓰기 공간을 훨씬 많이 나타냅니다. 백 스페이싱도 마찬가지입니다. 백 스페이스 한 번 또는 네 번?
파이썬과 같은 언어가 탭 위에 공백을 사용하도록 권장하는 이유는 무엇입니까?
어쩌면 나는 이것에 혼자 있지만 탭 대신 공백을 사용하여 들여 쓰는 사람들을 괴롭히는 것은 거의 없습니다. 타이핑 SpaceSpaceSpaceSpace보다 타이핑이 더 쉽고 직관적 Tab입니까? 물론 탭 너비는 가변적이지만 공백보다 들여 쓰기 공간을 훨씬 많이 나타냅니다. 백 스페이싱도 마찬가지입니다. 백 스페이스 한 번 또는 네 번?
파이썬과 같은 언어가 탭 위에 공백을 사용하도록 권장하는 이유는 무엇입니까?
답변:
일관성, 주로.
또한 파이썬과 같은 공백을 실제로 사용하는 경우가 있습니다. 다음 코드 스 니펫을 실행하면 어떻게 될까요?
def foo():
print "a"
print "b"
답변 : 두 개의 print 문은 같은 수준에서 들여 쓰기되지 않으므로 같은 코드 블록의 일부가 아니기 때문에 IndentationError가 발생합니다. (첫 번째는 탭을 사용하고 두 번째는 모든 공백을 사용합니다)
한 개발자의 편집기가 탭을 8 칸으로 설정하고 다른 개발자가 4를 설정하고 다른 사람이 5를 사용하여 이상한 이유로 5를 사용하는 경우에는 실망스러운 경우가 있습니다. SVN과 다른 사람이 업데이트하면 끔찍하고 끔찍한 혼란이 나타납니다.
따라서 공백이든 탭이든 항상 일관된 두 가지 이유가 있습니다.
그러나 공백은 탭보다 들여 쓰기를 훨씬 더 많이 제어 할 수 있으며 편집기에서 특별한 구성을 요구하지 않습니다. (vim에서와 같이 더 쉬울 수는 있지만 set expandtab
탭을 누를 때마다 공백을 삽입 하는 데 사용 하십시오)
편집 : 그리고 재미있게도, 사이트는 브라우저가 올바르게 표시 할 수 있도록 탭을 공백으로 정규화 한 것으로 보입니다. 포함 된 원본 탭을 보려면 "편집"을 클릭하십시오.
이것은 파이썬에서 들여 쓰기와 공백에 대한 좋은 토론입니다. 기사에서 :
탭의 의미는 컴퓨터 세계에서 잘 정의되어 있지 않으며 다른 유형의 시스템 및 편집기에서 완전히 다르게 표시 될 수 있기 때문에 탭을 함께 사용하지 않는 것이 좋습니다. 또한 복사 및 붙여 넣기 작업 중 또는 웹 페이지 또는 다른 종류의 마크 업 코드에 소스 코드를 삽입 할 때 탭이 손상되거나 잘못 변환되는 경우가 종종 있습니다.
스페이스 바 또는 백 스페이스 키를 두 번 이상 누르는 것에 대한 귀하의 주장에 따르면, 대부분의 소스 코드 편집기는 탭 키를 한 번만 누르면 구성 가능한 수의 공백을 삽입하고 마찬가지로 들여 쓰기가 없으므로 더 이상 키를 누르지 않습니다. 들여 쓰기에 공백 사용.
필자는 IDE less
에서 또는 메모장 에서 볼 때 코드가 항상 같은 양의 들여 쓰기로 표시되기 때문에 공백을 선호합니다 . 즉, 공간이 더 휴대 가능합니다.
파이썬 들여 쓰기에서는 프로그램 흐름을 제어하므로 매우 중요합니다.
탭으로 포맷 된 코드를 가져 와서 복사하면 탭이 변경되거나 손실되도록 코드 구조가 손상됩니다. 공백은 항상 공백 = 훨씬 안전합니다.
스페이스 바의 마모가 걱정되는 경우 탭을 스페이스로 자동 변환하도록 편집기를 설정할 수 있습니다.
.vimrc
이 나를 위해 덤프 할 수 있습니다 :)
set softtabstop=4
탭이며, 백 스페이스와 백 스페이스는 4 개의 공백을 탭으로 사용합니다. (글쎄, 각 탭
탭만으로는 여러 스타일에 대해 충분히 융통성이 없으며 탭과 공백을 거의 혼합하여 항상 엉망으로 만들기 때문에 공백은 항상 사용해야합니다.
일반적으로 공백이 필요한 한 스타일의 예는 다음과 같습니다.
call_some_function(parameter1,
parameter2,
parameter3,
parameter4,
parameter5,
parameter6,
parameter7);
모든 함수의 이름을 탭 크기의 괄호 (괄호는 1을 뺀 것)의 정확한 배수로 바꾸려는 경우가 아니라면 단순히이 작업을 수행하지 않습니다.
탭과 공백을 혼합하는 경우 거의 즉시 심각한 문제가 발생합니다. 탭이 일관되게 동일한 방식으로 확장되지는 않습니다. 일부 소프트웨어는 탭을 특정 수의 공백과 동등한 것으로 취급합니다. 다른 소프트웨어는 탭 모듈로를 특정 수의 공백으로 확장합니다. 예를 들어 탭 뒤의 항목은 항상 8의 배수 인 열 번호에서 시작합니다.
공백이 탭과 혼합되는 것을 막을 수는 있지만 여전히 문제가 있습니다. 탭은 가변 폭 글꼴에서 제대로 재생되지 않습니다. 이 문제는 (예를 들어) 후행 주석을 정렬하려는 경우에 발생합니다.
a.m = 9; // this is the slope
a.i = 4; // this is the intensity
a.x = 1; // this is the x-intercept
그들이 지금 서있는 것처럼, 그것들은 모두 완벽하게 정렬됩니다. 그러나 가변 폭 글꼴로 볼 때 상황이 나빠집니다. 공백이 있으면 주석이 약간 잘못 정렬 될 수 있습니다. 그러나 탭을 사용하면 정렬 오류가 종종 급진적으로 나타납니다.
a.m = 9; // this is the slope
a.i = 4; // this is the intensity
a.x = 1; // this is the x-intercept
가변 너비 글꼴에서 'i'와 'm'또는 'x'사이의 너비 차이가 갑자기 전체 탭 정지로 확대되었습니다.
결론은 거의 것입니다 어떤 당신이 상관없이, 탭 코드를 볼 수없는 방법의 변화가 어떻게 보이는 사소한, 일반적으로 읽을 수없는 혼란을 생성합니다 수 있습니다.
다른 질문에 대답하기 위해 : 다른 사람들은 이미 지적했지만 프로그래밍 편집기 (또는 다른 많은 것)에서 실제로 스페이스 바를 사용하여 공백을 삽입하는 사람을 상상할 수 없으므로 "typing spacespacespacespace"에 대한 질문 은 어쨌든 아무도 그렇게하지 않기 때문에 관련이 없습니다. 백 스페이스 간격과 마찬가지로 : BkSpc이전 탭 정지로 이동하기 위해 4 번을 눌러야하는 편집기를 상상하기는 어렵습니다 . 따라서 (다시) 질문은 관련이 없습니다.
결론 : 사용자 (만) 할 경우 탭이 괜찮 이제까지 당신의 코드를 보면, 당신은 오직 당신이하는 하나의 편집기를 사용하여이를 결코 , 그러나 너무 가까이 불가능에 (! 모두에서) 그 조건 재구성입니다 탭을 전혀 사용하지 마십시오.
tab
. 선호하는 편집기에서 구성 할 수없는 경우 더 나은 편집기가 필요합니다.