문제

나는 항상 사용하는 탭을 들여쓰기 때 나는 파이썬 프로그래밍입니다.그러나 내가 나가는 질문에 여기에 그래서 누군가가 지적장 Python 프로그래머의 공백을 사용하는 대신 탭을 최소화하는 편집기를 편집기 실수입니다.

어떻게 만드는 차이가 있나요?은 거기에 다른 이유를 사용하는 이유 공간을 대신한 탭 Python?또는 단순히지 않는 사실입니까?

내 내 편집기를 삽입하려면 공백을 대신 탭다에 유지하는 것 같이 내가에 사용되는가?

도움이 되었습니까?

해결책

왜냐하면 PEP-8 공간을 사용하라고 말합니다.

다른 팁

들여 쓰기 오타 (8 공간? 아니, 7 oops 9 ...) 후 쫓아가는 것에 지쳤습니다. 나는 내 출처를 '탭 만'으로 전환했습니다.

1 탭 == 1 계약 레벨, 풀 스톱

요점은 : 들여 쓰기를 4, 8 또는 PI / 12 문자 너비로 표시하려면 텍스트 편집기의 설정을 변경하면 코드를 엉망으로 만들지 마십시오.

(개인적으로, 나는 4 숯 너비 탭을 사용하지만 일부는 3 또는 8 공간을 선호하거나 가변 너비 글꼴을 사용하기도합니다.)

그러므로 주님 께 말씀하셨습니다. 네가 네 개의 공간으로 들여 쓰다. 그 이상도 이하도 아닌. 4는 당신이 들여 쓰레기를 깎아 내고, 당신의 들여 쓰기의 수는 4가 될 것입니다. 여덟자는 너를 들여 쓰지 않고, 너희 둘을 들여 쓰지 않고, 너는 네가 4로 진행한다는 것을 제외하고. 탭이 바로 나옵니다. -Eorg Brandl

탭 문자 (해당 문제에 대해 모든 공백)를 표시하는 편집기를 사용하십시오. 당신은 기사를 작성하지 않고 프로그래밍하고 있습니다.

탭을 사용합니다. 탭에 1 개의 공간 오류를위한 공간이 없습니다 (볼 수있는 경우). 문제는 사람들이 다른 편집자를 사용한다는 것입니다. 세계에서 유일한 일반적인 것은 위와 같이 탭 == 들여 쓰기입니다. 일부 녀석은 탭 키가 잘못된 수의 공간으로 설정되거나 수동으로 수행하여 혼란스러워합니다. 탭과 실제 편집기를 사용하십시오. (이것은 단지 PEP와 반대되는 것이 아니라 C/C ++ 및 기타 공백에 대한 언어에 관한 것입니다).

/비누 상자에서 내려갑니다

내가 주를 사용하는 이유는 탭을 통해 공간을 닫습니다.만약 나에 선하고 싶은 백스페이스-을 제거하여쓰기에는 한 줄이 backspace4x 었다면 공백반면,나만을 칠 필요가있는 경우에 한 번의 탭을 누릅니다.

내가 계속할 것 탭 사용하기 때문에 같이 언급했기 전에 사로 변환하 탭을 공백으로,하지만 다른 방법이다.

나는 생각을 쓰고 싶은 간단한 프로그램을 변환하는 코드를 공백으로드 탭을 사용하기 때문에,내가 괴물이 미워 공간이 있습니다.그들은 나를 평가하는 것을 잊지 마십시오!

Oh!와 화살표 키를 사용하여 오른쪽 및 왼쪽으로 이동합은 항상에서 때 그것은 공간이 있습니다.

업데이트:숭고한 텍스트 3 삭제 전체 소프트 탭을 닫습니다;하지만,화살표 키를 탐색은 여전히 지루한 수 있습니다.

Tabs vs. Spaces for Indentation

업데이트:지금 사용 vscode 도 썼 TabSanity 확장 그것을 해결하는 백스페이스,삭제와 화살표 키를 탐색.

TabSanity Extension in Action

가장 "Pythonic"방법은 계약 수준 당 4 개의 공간을 사용하는 것입니다. 그러나 Python 통역사는 공백이나 탭을 인식합니다. 유일한 Gottcha는 당신입니다 공간과 탭을 혼합해서는 안됩니다, 하나를 선택하십시오. 즉,이 사양은 공간을 권장하고 대부분의 개발자는 공간을 사용하므로 정말로 좋은 이유가 없다면 공간과 함께 가고 싶습니다.

내가 알 수있는 한 탭 대 공간의 장단점이 있습니다.

탭의 장점 :

  • 들여 쓰기, 무의식 및 압입을 가로 지르는 데 필요한 키 스트로크가 적습니다. (당신의 IDE가 공간 간식 영리함이 있더라도 탭만큼 좋지 않을 것입니다.)
  • 다른 프로그래머는 원하는대로 다른 탭 디스플레이 크기를 사용할 수 있습니다.
  • 당신은 압축 캐릭터를 "내부"내부 "내부"가질 수 없습니다. 예를 들어 일부 줄을 복사한다고 말하면 탭을 사용하여 줄의 시작 부분 근처에서 모호하게 클릭하여 선택을 시작하면 첫 번째 탭이 모두 얻을 수 있습니다. 공간을 사용하면 마진과 마진 사이의 작은 대상을 누르지 않으면 첫 번째 공간 문자를 놓칠 수 있습니다. 라인에서 들여 쓰기를 제거하는 것과 유사하게, 대부분의 편집자는 커서가 4 공간 들여 쓰기 문자의 중간에있는 경우 눌림 백 스페이스를 잘 처리하지 않습니다. 일반적으로 하나의 공간을 제거합니다. 탭을 사용하면 예상대로 작동합니다.
  • 다른 언어와 일관성이 있으므로 C ++/Java 용 탭과 Python 용 공간을 사용하도록 편집기를 설정할 필요가 없습니다.
  • 잘못된 계약은 더 분명 할 수 있습니다 (예 : 추가 탭은 추가 공간보다 훨씬 큽니다).

탭의 단점 :

  • 대부분의 Python 프로그래머는 공간을 사용하므로 컨벤션에 반대합니다.
  • 탭을 사용하는 것보다 멀티 라인 문을 정렬하기 위해 공백을 사용하는 것이 더 쉽습니다. 너 ~할 수 있었다 결합하여 탭을 사용하고, 정렬되는 공간을 사용하지만, 파이썬에서는 약간 위험한 것 같습니다!

일부 사람들이 과장된 비 문제가 있습니다.

  1. 사실상 모든 IDES/편집자가 공백 시각화를 지원하고 우주 계약에서 길 잃은 탭을 얻을 가능성이 거의 없습니다! 어쨌든 이것이 일반적인 오류라는 것을 알 수 없습니다. 게다가, 대부분 들여 쓰기 오류는 파이썬에 의해 잡히고, 좋은 IDE는 다른 들여 쓰기를 강조 할 수 있어야합니다.

  2. 당신은 탭과 쉽게 일을 정렬 할 수 없습니다 : 이것은 캐릭터 완벽한 정렬을하려는 경우에도 마찬가지입니다. 그러나 Pep-8은 이것에 반대하는 것을 권장하며, 파이썬은 어쨌든 멀티 라인 문과 잘 작동하지 않습니다.

  3. 사람들은 편집기에 탭 표시 크기에 대한 차이 설정이 있으므로 코드는 다른 장소에서 다르게 보일 것입니다. 예, 실제로 탭의 유익한 기능입니다.

나는 다른 Python 코드와 일치하기 위해 공간을 사용하기 시작했지만 솔직히 말하면 아마도 탭으로 다시 변경할 수있을 정도로 실망 스럽습니다. 많은 것은 당신의 IDE의 능력에 달려 있지만, 내 경험상 우주 들여 쓰기에 대한 IDE 지원은 탭을 사용하는 것만 큼 좋습니다.

당신이 아니라면 진짜 일관성이없는 것을 좋아하지 않습니다 대부분 (아마도 전부는 아니다!) Python Code, 탭을 사용하고 Whitespace 시각화 및 압입 강조 (사용 가능한 경우)를 켭니다. 나에게 가장 큰 이유는 선택의 용이성과 키 스트로크의 (상당히 중요한 IMO) 감소 때문입니다. 일부 컨벤션은 바보입니다.

업데이트: 나는 전 세계에 한 명의 편집자 (VIM과 같은 말도 안되어 제외)가 있다는 것을 발견했습니다. 4 개의 공간이 마치 모든 측면에서 탭처럼 행동하게 만드는 "Atomic Tabstops"라는 옵션이 있습니다 (크기를 조정할 수없는 경우 제외). 슬프게도 Atom은 매우 느리고 부풀어 오른 편집기이지만 이것은 훌륭한 기능이며 공간을 사용해야한다면 좋은 옵션이 될 수 있습니다. 바라건대 언젠가 다른 편집자들이 그것을 지원하기 시작할 것입니다. VSCODE의 문제는 다음과 같습니다.

나는 최근에 제목의 기사를 발견했습니다 파이썬 : 들여 쓰기에 대한 신화 이 질문과 관련 질문에 대해 논의합니다. 이 기사에는 파이썬 코드를 작성할 때 공간 사용을 권장하는 데 좋은 이유가 있지만 의견 불일치의 여지가 있습니다.

대부분의 파이썬 프로그래머는 공간 만 사용한다는 것이 사실이라고 생각합니다.

탭 문자를 삽입하는 대신 탭 키를 누르면 탭 키를 누를 때 탭 탑에 공백을 삽입 할 수있는 편집기를 사용하십시오. 그리고 그것을 잊어 버리십시오.

탭과 공백을 혼합 할 수 있지만 ... 탭은 8 개의 공간과 동일한 압입으로 간주되므로 편집기가 8 개의 공간을 고려하지 않는 한 혼합 할 때 문제를 요구하는 8 개의 공간으로 고려하지 않는 한.

탭 대신 공백을 사용하는 데 경험이 경험 한 유일한 불편 함은 압입 레벨을 쉽게 제거 할 수 없다는 것입니다. 단 하나의 탭 대신 4 개의 공간을 제거해야합니다.

탭 규칙. 중첩 루프에 대한 동일한 인수와 외부 루프를 "백"1 레벨로 가져오고 싶습니다. 팁 : 오래된 공간에 실린 파이썬 코드를 탭으로 변환하려면 실행 파일로 사용 가능한 탭 유틸리티를 사용하십시오. http://www.textpad.com/add-ons/.

역사적 협약에 관계없이 탭은 단순히 더 나은 선택이며 모든 미래의 Python 코드 라인에서 공간을 대체해야한다고 매우 강하게 느낍니다. 무능한 폭군을 쫓아내는 것과 같습니다. 이것에 대한 나의 근거는 다음과 같습니다. 핵심 값으로서의 단순성. 하나의 의미 론적 작업에 2 개 또는 4 개의 문자를 사용합니까? 전통을 넘어서는 정당성이 없습니다, IMO.

편집자 대 편집자 실수는 당신이 가지고있을 때 발생합니다 파일 내의 혼합 된 들여 쓰기. 이것은 다음과 같이 발생합니다. 코드 블록은 4 개의 공간으로 들여 쓰기 된 다음 하나의 들여 쓰기 레벨 "In"에 의해 탭으로 들여 쓰기됩니다. 이제이 작업을 수행 한 이교도 (믹싱 탭과 공백)는 그의 탭도 4 개의 공간이므로 아무런 문제가 없으며 Python은 아무런 문제가 없습니다.

이제 우리의 피해자는 나중에 와서 그의 탭을 8 개의 공간으로 설정했습니다. 이제 우리의 희생자들은 코드가 모두 울부 짖는 것처럼 보이고 그것을 수정합니다 ~에 의해 한 수준의 들여 쓰기 제거, 이제 코드를 만듭니다 바라보다 여전히 2 수준의 압입이지만 정말 한 레벨. 이 시점에서 모든 지옥이 느슨해집니다.

여기서 교훈은 탭과 공백을 혼합해서는 안된다는 것입니다. 당신이 이것을 유지한다면, 당신이 개인적으로 사용하든 코드를 공백이나 탭으로 쉽게 다시 표시하는 것이 쉽습니다. 탭과 공백을 혼합하지 않도록하는 가장 좋은 방법은 항상 실행하는 것입니다. python ~와 함께 -tt, 탭과 공간이 혼합 될 때 오류가 발생합니다.

탭과 공백의 경우 개인적으로 탭을 사용하므로 외관과 별도의 인기를 사용합니다. 코드가 탭이 공간보다 들여 쓰기 될 때 코드 모양을 변경하는 것이 훨씬 쉽습니다. 나는 이것이 Python 프로그래머의 99%가하는 일과 상반되는 것을 알고 있지만 그것이 나의 것입니다. 개인의 선호도, 어쨌든 탭 파일을 간격 파일로 변환하는 것은 쉽습니다. 실수로 끈으로 4 개의 공간을 찢어 버릴 수 있기 때문에 그 반대는 항상 사실이 아닙니다.

내가 파이썬을 처음 배웠을 때, 나는 그것을 사용하는 대부분의 언어가 융통성이 없기 때문에 중요한 공백에 대한 아이디어에 약간의 공간을 가졌다. 즉, 나는 Python의 다양한 들여 쓰기 스타일을 이해하는 능력에 깊은 인상을 받았습니다. 새로운 프로젝트에 어떤 스타일을 사용할 것인지 고려할 때 두 가지를 염두에 두는 것이 중요하다고 생각합니다.

  1. 첫째, 파이썬이 어떻게 들여 쓰기를 해석하는지 이해하는 것이 중요합니다. 브라이언 오클리 (Bryan Oakley)는 탭을 사용할 때별로 오류가 발생할 가능성을 언급했지만 실제로는 기본 통역사 설정에서는 불가능합니다. 이것에 대한 더 나은 설명이 있습니다 학습 파이썬, 에서 오라일리 미디어.

기본적으로 탭 너비를 정의하는 소스 파일 # 탭 width :)의 댓글을 포함시킴으로써 변경할 수있는 변수가 있습니다. Python이 탭을 만나면 계약 거리가 증가합니다. 다음 탭 width의 배수로. 따라서 파일의 왼쪽을 따라 탭이 뒤 따르는 공간이 입력되면 다음 탭 탭의 배수는 8입니다. 탭 자체가 입력되면 동일한 일이 발생합니다.

이러한 방식으로 편집기가 올바르게 구성되고 탭을 사용하고 탭과 공백을 혼합하기 위해 안전합니다. 편집기 탭을 설정하는 한 Python Tab-Width 선언과 동일한 너비로 정지합니다 (또는 결석 한 경우 8). 파일의 탭 윈트를 지정하지 않는 한 8 개의 공간 이외의 탭 너비를 가진 편집기를 사용하는 것은 일반적으로 나쁜 생각입니다.

  1. 둘째, 파이썬의 구문 디자인의 대부분은 동일한 프로젝트에서 프로그래머 간의 코드 가독성과 일관된 스타일을 장려하는 것입니다. 즉, 문제는 특정 프로젝트의 경우 코드를 가장 읽기에 가장 적합하게 만드는 것입니다. 프로젝트에서 일하는 사람들에 의해. 확실히 일관된 들여 쓰기 스타일을 유지하는 것이 좋습니다. 그러나 프로젝트에서 사용하는 플랫폼과 편집자에 따라 다른 스타일이 다른 프로젝트에 대해 이해 될 수 있습니다. 일치하지 않는 강력한 이유가 없다면 PEP 8, 그러면 사람들이 기대하는 것에 따라 일치 할 것이기 때문에 그렇게하는 것이 합리적입니다.

탭과 공간의 혼합을 성공적으로 사용하는 프로젝트가 발생했습니다. 기본적으로 공간은 작은 섹션을 들여 쓰기하는 데 사용되며, 여기서 계약 된 섹션에 있다는 사실은 상대적으로 중요하지 않습니다. 탭은 큰 구조적 특징에 대한 독자의 관심을 끌기 위해 사용됩니다. 예를 들어, 클래스는 탭으로 시작하여 함수 내부의 간단한 조건부 점검이 두 공백을 사용합니다.

탭은 또한 큰 텍스트 블록을 다룰 때 유용합니다. 3-4 수준의 압입 수준을 떨어 뜨리면 적절한 수의 공간과 정렬하는 것보다 적절한 탭과 정렬하는 것이 훨씬 쉽습니다. 프로젝트가 PEP 8 권장 스타일을 사용하지 않는 경우, 계약 패턴이 일관성을 유지하고 다른 사람들이 편집기를 일치하도록 구성하는 방법을 명시 적으로 읽을 수 있도록 스타일 안내서를 어딘가에 파일에 작성하는 것이 가장 좋습니다.

또한 Python 2.x에는 옵션이 있습니다 -t 혼합 탭과 공간에 대한 경고를 발행합니다 -tt 오류를 발행합니다. 이것은 동일한 범위 내의 혼합 탭과 공백에만 적용됩니다. Python 3은 가정합니다 -tt 그리고 내가 찾은 한, 그 점검을 비활성화 할 방법이 없습니다.

저는 주로 C ++ 프로그래머이지만 때로는 내 프로젝트에는 소량의 파이썬이 포함됩니다. 탭을 사용하여 C ++ 코드를 들여 쓰기. 이것은 여기에 세 가지 옵션이 있음을 의미합니다.

  1. C ++에서 탭과 파이썬의 공간을 사용하십시오. 이를 통해 C ++ 파일이 그대로 유지 될 수 있으며 PEP-8 권장 사항을 따르지만 프로젝트에서 일관성이 없습니다.
  2. 공백을 사용하려면 C ++ 코드를 변경하십시오. 이를 통해 프로젝트 내의 모든 파일은 일관성을 유지할 수 있으며 PEP-8 권장 사항을 따르지만 다시 돌아가서 모든 C ++ 파일을 변경해야합니다. 나는 탭을 선호하기 때문에 이것을 나쁜 것으로 생각합니다.
  3. 내 C ++ 코드와 Python 코드에서 탭을 사용하십시오. 이를 통해 전체 프로젝트를 일관성있게 만들고 선호하는 인기 스타일 인 탭을 사용할 수 있습니다. 단점은 PEP-8 표준을 따르지 않는다는 것입니다.

내 프로젝트의 경우 일반적으로 옵션 3과 함께갑니다.

경고 PEP-8 모두 명확하게 결론을 내릴 혼합 공간 TABs 입을 피할 수 있게 됩니다.는 경우에 당신은 그들을 혼합하고 싶을 시각화하는 공백에 IDE 지만 그럼 당신은 느슨한의 이점 Python 의 들여쓰기를 만드는 범위에 쉽게 볼 수 있습니다.시각화의 공백에 IDE 클러로 표시됩니다.

면 그것은 하나 탭 공간,그것은 해야 합 공간에 대한 간단한 원인:하나의 전환할 수 있는 거의 모든 Ide 및 텍스트 편집기를 자동으로 대체하는 탭을 공백으로,그러나 반대의 사실이 아닙니다.

있다하더라도 Ide 할 수 있는 자동으로 변환을 선도 공간에 라인이 탭으로,이것은 결국 지도를 갖는 혼합물의 탭이고 공간이 있습니다.을 고려중인 문과 같은 함수 호출의 많은 매개 변수 또는 문서의 문자열.하는 동안"ascii-art"는 또한 피할 수 있습 쉽게 사고에 의해 발생하는 하나의 공간 후 남아 있는 선도하는 탭이 있습니다.

다른 답변을 가져 몇 가지에서 인수의 찬성 탭:

  • TAB 더 효율적으로 합니다.물론 이것은 사실이지만,모든 텍스트 편집기에서 허용하는 즉시 삽입하는 원수의 공백을 때에 tab 키를 누르
  • 들여쓰기/Dedenting 때 쉽게 단지 중 하나를 제거하는 대신 탭 2/3/4/8 공간이 있습니다.사실이지만,대부분의 텍스트 편집기에서 허용하는 이렇게 자동으로 든:블록을 선택하 들여쓰기/dedent 은 기본적인 기능의 프로그래밍기 편집기,주석과 같은/주석.면 텍스트 편집기로 없이 구현,그것은 적어도 쉽게 사용하는 매크로 기능으로는 달성할 수 있습 같은 것입니다.
  • 다른 프로그래머는 다음과 같이 다 들여쓰기 너비입니다.그것은 사실,그리고 사용하는 장점 TABs 니다.문제가 상호 작용을 다른 개인 및/또는 팀.이 작업을 위해 실제 세계에서 모두는 것에 동의하는 모든 사용 TABs 니다.이 때문에 일어나지 않고,그것은 작동하지 않습니다 어쨌든.에서 진정한 세계 시나리오에 있는 설정의 코딩 가이드 라인 프로젝트에 동의에 따라 어쨌든,그리고 방법의 들여쓰기는 확실히 그 중의 한도에서 다른 프로그래밍 언어의 의미는"오직"에는 시각적 수준입니다.

이럴,주요 포인트는 대부분(그렇지 않으면 모두)에 대한 답은 없 여기에 사이의 상호 작용 팀 또는 개인은,특히 시나리오에서는 참가자 목록은 알지에서 시작합니다.코드 충족하는 코드는 모두가 사용하는 탭이나 모두를 사용할 공간이 있습니다.그것은 혼합할 수 없습 없이는 결국 실행하는 기능으로 문제입니다.사람이 완벽하지 않습니다.도구가 완벽하지 않습니다.그 이유는 우리는 이럴를 사용하지 말아야 TABs 다.

아무 대답이 없이 완료 링크 그렉이 그의 대답에서 제공하는 이미: Python:신화에 대해 들여쓰기

모든 사람은 얼마나 많은 코드를 들여 쓰기 해야하는지에 대한 선호도가 다릅니다. 당신이 누군가와 코드를 공유하고 계약에 관한 선호도가 다르다고 가정 해 봅시다. 들여 쓰기가 탭에 있으면 친구는 편집기 설정에서 항상 탭 너비를 변경할 수 있습니다. 그러나 들여 쓰기가 공간에있는 경우, 친구는 소스 코드를 선호도로 설정하려면 실제로 소스 코드를 변경해야합니다. 그런 다음 친구의 변경을 받으면 선호도로 다시 변경하기로 결정할 수 있습니다. 이 경우, 당신은 앞뒤로 변화하는 들여 쓰기 수준의 지루함을 다루어야하거나, 한 사람은 다른 사람의 선호도를 들여 쓰기 수준에서 채택해야합니다. 당신과 당신의 친구가 탭을 사용하는 경우, 코드는 변하지 않은 상태에서 각각 다른 들여 쓰기 수준을 볼 수 있으므로 선호도가 다른 사실은 문제가되지 않습니다. 그렇기 때문에 제 생각에는 탭이 모든 프로그래밍 언어의 들여 쓰기 공간보다 낫습니다.

탭이 단순히 작동하지 않는 시나리오, 즉 사용중인 코딩 스타일에 따라 일부 코드 라인을 하나의 공간 정확도로 들여 보내야 할 수도 있습니다.

def foobar():
    x = some_call(arg1,
                  arg2)

이 경우 순전히 탭을 사용하는 것은 전혀 작동하지 않습니다. 메인 들여 쓰기에 탭을 사용하고 하위 인디언트를위한 공간을 사용하면 효과가 있지만 두 가지를 혼합하지 않는 어려운 규칙을 위반합니다.

그러나 위의 코드 예제와 같은 상황을 피하는 코딩 스타일/컨벤션 문서를 사용할 때는 그렇지 않습니다.

탭 대신 공백을 사용하는 문제는 파일 크기가 엄청나게 커진다는 것입니다. 예를 들어, 탭의 공백을 교환 할 때 500kb 공간에 인한 파일을 200kb로 줄일 수 있으므로 항상 탭을 사용하는 이유입니다.

파일 크기가 작는 것은 더 빠른 로딩, 컴파일, 실행 (경우에 따라) 등을 의미합니다.

나에게는 공간을 사용하는 것이 없지만 누군가가 탭에 문제가있는 편집기를 사용하는 경우 " t"를 ""또는 "" "또는 무엇이든 대체 할 수 있습니다.

이미 나열된 모든 주장 외에도이 주장은 상당히 중요하다고 생각합니다. 들여 쓰기에 대한 신화):

또한 복사 및 붙여 넣기 작업 중에 또는 소스 코드가 웹 페이지 또는 기타 종류의 마크 업 코드에 삽입 될 때 탭이 종종 파괴되거나 잘못 변환됩니다.

그래도 탭에 대한 또 다른 주장 (강력한 환경에 따라)은 때로는 전화 키보드에 누락됩니다. 가능한 경우 대체 키보드를 설치하여 치료할 수 있습니다.

논쟁 ~을 위한 아직 언급하지 않은 탭은 1 탭은 1 문자 (0x09, 파일의 1 바이트)이고 4 개의 공간은 4 자 (파일의 4 배 0x20, 4 바이트)입니다. 따라서 공간을 사용하면 공간이 4 배 낭비됩니다.

이 일관된 논증 목록을 마무리하기 위해 Tim Peters의 대답을 인용하고 싶습니다. 발행 7012 : 탭은 들여 쓰기 공간보다 낫다:

Python "공간 전용"표준은 분산 코드입니다. 수년간의 초기 경험 공유 코드 (...)

그것이 어떻게 차이를 만들까요?

일부 편집기는 기본적으로 단일 탭 문자를 세트 수의 공간 문자로 바꾸도록 구성되지만 일부는 그렇지 않습니다. 모든 사람이 공간을 사용하는 경우 기본 편집기 설정의 차이를 무시할 수 있습니다.

파이썬의 탭 대신 공백을 사용하는 다른 이유가 있습니까? 아니면 단순히 사실이 아닌가?

그렇습니다. 저 앞에 많은 답변이 지적한 다른 유효한 이유가 있습니다. 그러나 "PEP-8"은 말한다. 이것은 PEP-8이 코딩 표준이라는 자체 영속 신화에서 비롯됩니다. 모두 Python Code는 실제로 Python 라이브러리의 표준 세트에 대한 코딩 표준 일 때. 일부는 PEP-8이 널리 받아 들여지고 있으며 일부는 대부분의 Python 프로그래머가 탭 대신 공간을 사용한다고 주장합니다. 이 사이트의 투표 수는 대중이 탭이 선호한다는 것을 분명히 보여 주므로 이러한 주장의 증거를 요청하고 싶습니다. 나는 당신이 "pep8 says so"를 당신의 질문에 대한 답으로 받아 들였다는 것은 매우 불행한 일입니다.

편집기를 바로 탭 대신 공백을 삽입하도록 편집기를 전환하거나 예전처럼 계속 진행해야합니까?

그것은 의존하며,이 마지막 질문에 대한 답은 실제로이 스레드에 약간의 가치를 더할 수 있다고 생각한 곳입니다. IMHO, 사용중인 언어에 관계없이 사용하기에 가장 적합한 코딩 표준은 귀하가있는 상황에 따라 다릅니다.

  • 이미 기존 코드베이스에서 작업하기 시작한 경우 : 어려운 일이 어려워지면 기존 코딩 표준을 따르십시오.
  • 팀이 새로운 프로젝트를 처음부터 시작하는 경우 : 토론하고, 팀으로서 처음에 코딩 표준을 결정하고,이를 고수하십시오.
  • 만약 당신이 솔로를 가고 있다면 : 당신이 가장 행복하고 가장 생산적인 느낌을주는 모든 일을하십시오.

그렇다면 어떤 상황에 속합니까?

마지막으로 내 자신의 솔로 프로젝트를 위해 내 입장을 명확하게하기 위해 탭이 나에게 더 합리적이기 때문에 탭을 사용하고 탭에 더 생산적입니다.

고 있다고 생각하는 솔루션을 두:

  1. 와의 호환성 PEP-8 사용하여 공간
  2. 편의 탭을 사용하여는 대신 4 공간

In Notepad++,"이동 환경 설정"-->"탭을 설정"을 선택하고"Python"목록에서 오른쪽에 있습니다.다음 확인"탭 크기:4",그리고 박스에 체크를 교체하십시오"[탭]의 space".이 경우에,당신은 단순히 tab 키를 사용하여 들여쓰지만,Notepad++로 변환하여 4 개의 공백을 위해 당신입니다.

이것은 PEP 8 2017 년 7 월 현재 :

Enter image description here

이 진술은 다른 선택의 여지를 남기지 않는 것 같습니다.

그러나 이것은 Pep 8이 우리에게 말하는 것이 아니라 나중에 몇 줄이 아닙니다.

Enter image description here

위에서, 첫 번째 진술은 a 선호 공백의 경우, 두 번째 진술은 탭이 들여 쓰기 된 코드의 존재와 일부 코더에 대한 선호도를 인정합니다.

그래서: pep 8은 탭 압입 내성입니다. 그것은 탭과 공간이 압입을 위해 혼합 된 것을 용납하지 않으며, 들여 쓰기 자체가 필수이기 때문에 이해할 수 있습니다.

그것을 언급 할 가치가있을 수 있습니다 Google의 파이썬 코딩 스타일 또한 4 공간 규칙을 따릅니다.

다른 것이 있습니다 다양한 주장과 정당화 탭 또는 4 공간에 유리합니다.

PEP 8을 시행하거나 PEP 8을 따르는 다른 사람들과 정기적으로 코드를 공유하는 회사에서 일하는 경우 상식이 4 공간을 지시합니다. 나는 c/c ++의 탭에 (아마도)에 익숙했습니다. 그러나 IDE가 올바르게 설정되면 차이가 최소화됩니다.

더 많은 돈을 벌 수있는 유일한 이유 때문에 탭 대신에 공간을 사용하십시오 :)

참조 : 공간을 사용하는 개발자는 탭을 사용하는 것보다 더 많은 돈을 벌 수 있습니다. (스택 오버플로 블로그 게시물).

그래서 나는 여기에 모든 응답을 읽고 인기를 제거하기 위해 백 스페이스 버튼을 반복해서 두드리는 성가심없이 PEP-8을 준수 할 수있는 방법을 궁금해하고 있으며, 모든 멋진 매크로 버튼과 빛으로 Logitech 게임 키보드를 내려다 본다. 내 머리에 전구가 밝아집니다.

Logitech의 소프트웨어를 열고 탭 버튼 바로 옆에 버튼에 몇 개의 매크로를 정의했으며 문제가 해결되었습니다.

한 버튼은 4 개의 공간을 추가하고 다른 버튼은 백 스페이스를 4 번 수행합니다. 놀라운. 그냥 놀랍습니다. 새끼 손가락으로 버튼을 누르기가 너무 쉽습니다.

""<- 네 공백! 버튼을 한 번 푸시로! 백 스페이스를 보여줄 수 있다면 나도 그렇게 할 것입니다. Logitech G105 키보드를 받으면 모든 문제가 사라집니다!

방금 시작했지만 공간보다 탭을 사용하는 것이 훨씬 쉽고 공간의 PEP-8 첨가를 이해하지 못합니다. Sublime Text 2는 흰색의 흰색 세로, 점선으로 탭을 시각화하는 데 큰 도움이되며 목록이나 사전의 요소를 정렬하기 위해 공간을 혼합하는 경우가있는 동안, 나는 그것이 상황을 경험하지 못했습니다. 해로운 일이 되십시오.

나는 탭을 좋아하지만 어떻게 든 내가 좋아하는 또 다른 규칙과 호환되지 않습니다 : 80 열 제한.

4 개의 공간 탭을 선택하고 10 탭을 삽입하면 80 열 제한을 충족하기 위해 40자를위한 공간이 남아 있습니다. 다른 코더가 8 개의 공간 탭을 선호하는 경우 동일한 줄은 120 자 길이로 나타나며 유효한 80 열 선로 나타나지 않습니다!

80 열 제한을 정의하려면 탭의 길이를 선택해야합니다. 이 경우 X 공간 또는 길이 X 탭을 갖는 것은 실제로 차이를 만들지 않습니다.

편집 : 관련 스레드 : 공백 대신 탭을 사용할 때 최대 선 길이 유지?

공간을 사용하는 주요 이점 중 하나는 소스 코드가 선택 편집기를 넘어서 소스와 상호 작용 해야하는 외부 도구와 구성된 설정에서 변동성을 제거하는 것입니다.

일부 구체적인 예가 툴팁에서 Python Docstrings의 렌더링을 고려하십시오. 비주얼 스튜디오 코드, 또는 DIFF 도구와 같은 도구 비할 바 없는 또는 Winmerge, 성능 또는 코드 커버리지 도구 등 기본적으로 기본적으로 이러한 다양한 다른 인터페이스 툴링은 각각 탭을 해석하는 방법에 대한 다른 설정을 가질 수 있으며, 툴셋에서 화면에서 크게 다른 것을 찾기 위해 성가시고 때로는 혼란 스러울 수 있습니다. 안팎으로 다이빙하십시오.

간단히 말해서, 당신은 무기고의 도구 스위트에 대한 균일 한 구성을 방해하는 대신 소스의 정렬을 정의합니다. 공간은 단호 공간 글꼴로 엄격하게 해석되어 글꼴의 정의로 인해 툴링의 전체 범위에 걸쳐 신뢰할 수 있고 일관된 정렬을 제공하며, 제 3 자의 탭 렌더링 구현/구성이 아닙니다.

이에 대한 또 다른 각도는 탭 문자가 부주의 한 탭 완료를 트리거 할 수있는 터미널에서 실행될 선행 탭 소스를 복사하는 것입니다. 예를 들어, 다음 파이썬 소스 (들여 쓰기로 사용되는 탭)를 복사하면

cmd_create_db = '''CREATE TABLE test (
    Col1 INTEGER,
    Col2 INTEGER,
    Col3 TEXT)'''

다음과 같은 것을 볼 수 있습니다 (Visual Studio Code의 통합 터미널 참조) ...

>>> cmd_create_db = '''CREATE TABLE test (
... .DS_StoreCol1 INTEGER,
... .DS_StoreCol2 INTEGER,
... .DS_StoreCol3 TEXT)'''
>>> cmd_create_db
'CREATE TABLE test (\n.DS_StoreCol1 INTEGER,\n.DS_StoreCol2 INTEGER,\n.DS_StoreCol3 TEXT)'

(제외 : 툴링 전반에 걸친 일관성에 대한 이러한 관찰이 스택 오버플로에서 발견 된 급여 차이에 대한 힌트를 나타낼 수있는 세상을 주문하려는 날카로운 개발자의 차별적 인 마음의 표시인지 궁금했습니다.)

탭 키를 누를 때 탭 대신 공백을 삽입하는 두 개의 공간 압입과 편집기 (KWRITE)를 사용합니다.

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