2009-04-02 1 views
23

: 내가 대신 #의 's의 접두어 문자열과 같은 일반적인 의견을 작성하는 것을 선호파이썬 코멘트 : # 대 문자열 파이썬 소스 코드 안에 주석을 넣어 "표준"방법에 대해서는

def func(): 
    "Func doc" 
    ... <code> 
    'TODO: fix this' 
    #badFunc() 
    ... <more code> 

def func(): 
    "Func doc" 
    ... <code> 
    #TODO: fix this 
    #badFunc() 
    ... <more code> 

. 공식 파이썬 스타일 가이드는 문자열을 주석으로 사용하는 것을 언급하지 않습니다 (읽는 동안 그것을 놓치지 않았다면).

내가 주로 # 문자가 주석 블록으로보기 흉한 것으로 생각하기 때문에 그런 식으로 좋아합니다. 내가 아는 한이 문자열은 아무 것도하지 않습니다.

이렇게하면 단점이 있습니까?

답변

59

문자열 (조작하지 않은 명령문)을 주석으로 잘못 사용하지 마십시오. 문서 끈, 예 : 모듈, 클래스 또는 함수의 첫 번째 문자열은 특별하며 확실히 권장됩니다.

docstrings은 설명서이며 문서 및 의견은 두 가지입니다.

  • 문서는 코드가 무엇을 이해하는 것이 중요합니다.
  • 댓글 설명 코드는입니다.

문서는 예를 들어, 사용 코드가, 원하는 사람들이 의견을 코드를 이해하는 사람들에 의해 읽 그것을 유지하기 위해. 해설에 대한 문자열을 사용

는 다음의 (잠재적) 단점이 있습니다

  • 그것은 문자열이 아무것도하지 않는 것을 모르는 사람 혼란.
  • 주석 및 문자열 리터럴은 코드 편집기에서 다르게 강조 표시되므로 스타일에 따라 코드를 읽기가 어려울 수 있습니다.그것은이 :
  • 그것은 성능 및/또는 메모리 사용에 영향을 수
  • 이 가

    파이썬 프로그래머를위한 가장 중요한 역할을 한

(문자열이 바이트 코드 컴파일시 제거하지 않은 경우 주석을 제거은 그 확실히 싼 있도록 스캐너 수준에서 이루어집니다) 무당송 :

하나만 있어야합니다.

주석을 사용하십시오.

+7

레코드의 경우 성능에 영향을 미치지 않습니다. dis.dis 출력을 보거나 컴파일 된 모듈에서 문자열을 실행하면 문자열 추적이 표시되지 않으므로 컴파일하는 동안 최적화 된 것처럼 보입니다. (그러나 다른 이유는 충분하다.) – Brian

4

정의 (또는 클래스)의 첫 번째 문자열 리터럴 만 "특별"하다고 생각합니다. 즉, 정의 된 객체 (또는 클래스 ') docstring에 인터프리터에 의해 저장됩니다.

코드에 넣는 다른 문자열 리터럴은 최악의 경우 해석기가 런타임에 문자열 값을 작성한 다음 그냥 버리는 것을 의미합니다. 즉, 코드에 문자열 상수를 쓰면 "주석"을 사용하는 것이 성능 측면에서 비용이 많이들 것이라는 의미입니다.

물론 나는 이것을 벤치마킹하지 않았으며 확실히 파이썬 인터프리터를 확실히 알지 못합니다.

5

물론 단점은 코드 문자열과 주석 문자열이 서로 섞여 혼동 될 수 있다는 것입니다.