문제

파이썬의 블록 전에 결장의 목적은 무엇입니까?

예시:

if n == 0:
    print "The end"
도움이 되었습니까?

해결책

결장은 들여 쓰기 블록의 시작을 선언합니다.

기술적으로는 필요하지 않습니다. 블록이 완료되면 들여 쓰기와 인도를 할 수 있습니다. 그러나, 파이썬 코안 “명시 적은 암시적인 것보다 낫다”(eibti), 나는 Guido가 고의적으로 결장을 의무적으로 만들었다 고 믿는다. 어느 진술 ~해야 한다 이어서 압축 코드 끝은 결장에서 끝납니다. (결장 후에도 계속하면 한 라이너가 가능하지만이 스타일은 널리 사용되지 않습니다.)

또한 구문 인식 자동 인센트 편집기의 작업을 더 쉽게 만들고 결정에서도 계산되었습니다.


이 질문은 파이썬 FAQ, 그리고 나는 Guido의 답변 중 하나를 찾았습니다. 여기:

if/while/def/class 문에 콜이 필요한 이유는 무엇입니까?

결장은 주로 가독성을 향상시키기 위해 필요합니다 (실험 ABC 언어의 결과 중 하나). 이걸 고려하세요:

if a == b 
    print a

~ 대

if a == b: 
    print a

두 번째는 어떻게 읽기 쉬운지 주목하십시오. 이 FAQ 답변에서 결장이 어떻게 예를 세우는 지 더 알아보십시오. 영어로 된 표준 사용법입니다.

또 다른 사소한 이유는 콜론이 구문 강조 표시가있는 편집자가 더 쉽게 만들 수 있기 때문입니다. 그들은 프로그램 텍스트를보다 정교하게 구문 분석하는 대신 계약이 증가 해야하는시기를 결정하기 위해 콜론을 찾을 수 있습니다.

다른 팁

Pewprikanese로 작성된 식료품 점에서 다음과 같은 목록을 고려하십시오.

pewkah
lalala
    chunkykachoo
    pewpewpew
skunkybacon

내가 그것을 읽었을 때, 나는 혼란스럽고, Chunkykachoo와 Pewpewpew는 일종의 Lalala입니까? 아니면 Chunkykachoo와 pewpewpew가 특별한 아이템이기 때문에 들여 쓰기가된다면 어떨까요?

이제 내 pewprikanese 친구가 목록을 더 잘 구문 분석하는 데 도움이되는 콜론을 추가 할 때 어떤 일이 일어나는지 확인하십시오.

pewkah
lalala:   (<-- see this colon)
    chunkykachoo
    pewpewpew
skunkybacon

이제 Chunkykachoo와 Pewpewpew는 일종의 Lalala임을 분명히 알 수 있습니다.

Python을 배우기 시작한 사람이 있다고 가정 해 봅시다. 콜론이 없다면, 그녀가 "이 라인은 특별한 아이템과 같기 때문에이 줄이 들여 쓰기를 계속 생각할 가능성이 상당히 높습니다.", 그것이 들여 쓰기에 대해 생각하는 가장 좋은 방법이 아니라는 것을 깨닫는 데 시간이 걸릴 수 있습니다.

세 가지 이유 :

  1. 가독성을 높이기 위해. 콜론은 코드가 다음과 같은 압축 된 블록으로 흐르도록 도와줍니다.
  2. 텍스트 편집기/IDE를 돕기 위해 이전 줄이 결장으로 끝나면 다음 줄을 자동으로 들여 줄 수 있습니다.
  3. 파이썬으로 구문 분석을 약간 쉽게 만듭니다.

내가 아는 한, 독자가 결장 이후의 들여 쓰기를 기대해야한다는 것은 의도적 인 디자인입니다.

또한 이와 같은 구성을 가능하게합니다.

if expression: action()
code_continues()

(주석가처럼) 이것은 좋은 파이썬 스타일의 빛나는 금 표준이 아니라는 점에 유의하십시오. 공란을 갖는 것이 훨씬 나을 것입니다.

if expression: action()

code_continues()

혼란을 피하기 위해. 첫 번째 예를 들어, 코드를 보유한 이후로 그렇게 쓸 수 있다는 것을 명확하게하고 싶었습니다. if 결장 바로 뒤에 컴파일러가 다음 줄이 ~ 아니다 들여 쓰기.

Python Inventor 인 Guido van Rossum에 따르면, 결장을 사용하여 구조를보다 명백하게 만드는 아이디어는 초보자를 대상으로 한 Python 전임자 ABC 언어와의 초기 실험에서 영감을 얻었습니다. 분명히 초기 테스트에서 초보자 학습자들은 결장이없는 것보다 더 빨리 진행되었습니다. Guido의 Post Python History 블로그에서 전체 이야기를 읽으십시오.

http://python-history.blogspot.com/2009/02/early-language-design-and-development.html

그렇습니다. 결장은 1 라이너에 유용하며 세미콜론보다 덜 성가신 것입니다. 또한 이진 연산자로 끝나는 경우에만 여러 줄에서 장시간 권장 휴식을위한 스타일 가이드

x = (23 + 
     24 + 
     33)

결장 제작 된 복합 문장의 추가는 더 큰 스타일의 균일 성을 위해 같은 방식으로 보입니다.

코브라 (Cobra)라고 불리는 결장없는 방언뿐만 아니라 cpython을위한 '콜론리스'인코딩이 있습니다. 그것들은 픽업하지 않았습니다.

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