파이썬에 여러 줄 주석이없는 이유는 무엇입니까?


252

좋습니다. 삼중 따옴표 문자열이 여러 줄 주석으로 사용될 수 있다는 것을 알고 있습니다. 예를 들어

"""Hello, I am a 
   multiline comment"""

'''Hello, I am a 
   multiline comment'''

그러나 기술적으로 이것은 문자열입니다. 맞습니까?

나는 파이썬 스타일 가이드를 봤는데 읽었지만 멀티 라인 / * * / 유형의 주석이 공식적으로 구현되지 않은 이유에 대한 기술적 답변을 찾을 수 없었습니다. 삼중 따옴표를 사용하는 데 아무런 문제가 없지만이 디자인 결정을 이끌어 낸 것에 대해서는 약간 궁금합니다.


8
문자열로 할 수 있다면 더 많은 방법을 추가하는 이유는 무엇입니까?
브로디

12
주석을 추가하려는 내용에 주석 / 여러 줄 문자열이 있으면 실패한다는 점을 추가하고 싶었습니다. 물론 우리가 필요한 이유입니다.
nycynik

50
@ S.Lott 유용한 질문이라고 생각합니다. 왜 파이썬이 좋은지 이해하려면, 결정된 디자인 결정 (그리고 진행중인 결정)을 이해하는 것이 중요합니다. 이 질문은 논쟁 적이거나 논쟁 적이 지 않다. 궁금하다. 호기심에 대해 너무 가혹할 필요는 없습니다.
Mark E. Haase 2018 년

6
if False:코드에 대한 여러 줄 주석이 필요한 경우 코드
AturSams

5
@Brody 문자열이 처리되므로. 주석은 무시됩니다. 문자열을 주석으로 사용하는 데 문제가 있습니다. 그냥 둘러보세요 :)
ADTC

답변:


266

"Guido가 여러 줄로 된 의견이 필요하지 않다"는 것보다 더 나은 답변을 얻을 수 있을지 의문입니다.

귀도는 이것에 대해 트윗 했습니다 :

Python 팁 : 여러 줄 문자열을 여러 줄 주석으로 사용할 수 있습니다. docstring으로 사용되지 않으면 코드를 생성하지 않습니다! :-)


28
이에 대한 귀도의 트윗 을 보십시오 .
Petr Viktorin

15
여러 줄 문자열과 블록 주석을 혼합하는 것의 한 가지 단점은 IDE가 원하는 것을 알지 못하므로 필요에 따라 다른 스타일로 주석을 표시 할 수 없다는 것입니다.
Baiyan Huang

21
또한 여러 줄 문자열로 코드를 주석 처리 할 수 ​​없습니다 (주의하지 않으면 들여 쓰기 오류가 발생할 수 있음). 으아!
Mike Graham

3
코드에 주석 처리 된 코드가 포함되어 있으면 코드가 거부되고 CV를 업데이트하도록 초대받을 수도있는 많은 분야에서 일했습니다. 필요하지 않은 코드를 제거하거나, 코드가 버전 제어를받는 경우 문제가되지 않거나, if False:비활성화해야 할 코드보다 먼저 사용하십시오.
Steve Barnes

4
@SteveBarnes는 프로덕션에서 주석 처리 된 코드의 큰 블록이 나쁘다는 데 동의합니다. 그러나 나는 왜 if False더 나은지 이해하지 못합니다 . 코드 블록이 비활성화되었음을 한눈에 알 수 없으므로 명확하지는 않지만 정확히 동일한 것을 달성합니다.

59

여러 줄 주석은 쉽게 깨지기 쉽습니다. 간단한 계산기 프로그램에 다음이있는 경우 어떻게합니까?

operation = ''
print("Pick an operation:  +-*/")
# Get user input here

여러 줄로 주석을 달아보십시오.

/*
operation = ''
print("Pick an operation:  +-*/")
# Get user input here
*/

문자열에 끝 주석 구분 기호가 포함되어 있습니다.


174
이 답변의 가장 좋은 점은 SO의 구문 강조 표시기가 어떻게 처리하는지입니다.
Nietzche-jou

73
이것은 우리가 이스케이프 문자가있는 많은 이유 중 하나입니다. 여러 줄 주석을 지원하지 않는 좋은 이유는 아닙니다.
Natalie Adams

34
나는 당신의 논리를 이해하지 못합니다-아마도 내 의견이 충분하지 않았을 것입니다. \를 이스케이프 문자로 사용한 경우 : print ( "작업 선택 : +-* \ /") "* /"는 더 이상 종료 주석 블록을 문자 그대로 / 인쇄로 표시하지 않습니다. 계속해서 C ++에서 이것을 테스트하십시오. 실제로 SO의 구문 강조 표시기는 이것이 유효 함을 보여줍니다. 이것은 복잡한 주제가 아니며 다른 언어로 수년간 존재 해 왔습니다. 코드에서 "* /"를 사용할 수 있음을 나타 내기 위해 이스케이프 문자 사용을 포함하도록 게시물을 업데이트하도록 요청합니다.
Natalie Adams

23
코드에 '' '가 포함되어 있으면 어떻게됩니까? oops your code contains end comment delimiter
siamii

21
여러 줄 주석은 본질적으로 깨지지 않습니다. 단지 대부분의 구현은 (파이썬 포함)입니다. 파이썬에서 여러 줄 주석을하는 분명한 방법은 주석 블록으로 시작하고 #:들여 쓰기를 사용하여 주석이 끝났을 때 표시하는 것입니다. 깨끗하고 일관되며 중첩을 완벽하게 처리합니다.
GatesDA

34

삼중 인용 텍스트는 여러 줄 주석으로 간주되어서는 안됩니다. 관례 적으로 그것들은 docstrings 입니다. 코드의 기능과 사용 방법을 설명해야하지만 코드 블록 주석 처리와 같은 것은 아닙니다.

Guido에 따르면 Python의 여러 줄 주석은 연속적인 한 줄 주석 ( "블록 주석"검색) 일뿐 입니다.

코드 블록을 주석 처리하기 위해 때때로 다음 패턴을 사용합니다.

if False:
    # A bunch of code

6
이후로 귀도 가 그의 마음을 노래 한 것 같습니다 .
Petr Viktorin

5
"거짓이면"솔루션과 관련하여 문제는 파이썬에서 탭과 함께 작동하기 때문에 "if False :"아래의 모든 코드를 탭해야한다는 것입니다. 그리고 청크를 나중에 꺼냅니다. 따라서 텍스트 편집기를 사용하면 꽤 깔끔해야합니다.
barlop

3
괜찮은 편집기를 사용한다면, * /와 같은 시간이어야합니다.
AturSams

@ barlop yup-편집자를 배우십시오! 이것은 일반적으로 1 초 안에 vim에서 가능합니다V}>>
Triptych

30

이것은 작업을 수행하는 분명한 방법이 있어야한다는 핵심 개념으로 되돌아 갈 수 있습니다. 추가 주석 스타일은 불필요한 복잡성을 추가하고 가독성을 떨어 뜨릴 수 있습니다.


8
그것이 문제라고 생각합니다. 문자열을 주석으로 사용하는 것은 분명하지 않으며 주석을 수행하는 두 가지 방법이 있습니다 : 문자열과 #.
GatesDA

1
그러나 C 기반 언어와는 크게 다르지 않습니다 : / * vs //.
벤 로버츠

//, 누군가가 여러 줄로 된 주석을 원하는 이유를 고려하십시오. 좋은 이유 : ... "이 두 가지를 많이 입력 할 필요가 없습니다."와 "이 특정 주석을 매우 정확한 방식으로 표시해야합니다. 앞의 #을 허용하지 않습니다. " 누군가가 ASCII 다이어그램을 원하거나 특정 문제가 발생하면 참조 자바 스크립트 코드를 복사하여 붙여 넣기를 원한다고 가정 해보십시오. 여기서 작업을 수행하는 한 가지 확실한 방법은 해당 작업의 중요한 경우를 다루지 않습니다. 그러나 추가 의견 양식이 잘못되었음을 동의합니다.
Nathan Basanese 2016 년

3
"이 두개를 많이 입력 할 필요는 없습니다." 이것이 바로 거의 모든 언어가 블록 주석 (/ * .. * /)을 갖는 이유입니다. 그것을 믿거 나 말거나, 나는 코드가 무엇을 하는지를 문서화하고 싶다 : 입력, 출력, 사용 된 알고리즘, 매개 변수 ... 그것은 수정되는 많은 텍스트입니다. 한 줄짜리 주석으로 만 제한하는 것은 우스운 일입니다. 코드에 주석을 달기위한 접근법을 옹호하지는 않습니다. 잘 알려진 부작용이 이해되는 한 대체 접근법을 시도 할 때 편리합니다.
Albert Godfrind

3
파이썬에 대해 또 다른 사실은 기본적으로 한 사람이 디자인 한 언어라는 것입니다. 귀도가 말한 것은 진실입니다 ... 그래서 우리는 언어 버전 사이에 이상한 비 호환성이 있습니다. 왜 ? Guido가 그렇게 말했기 때문에 ...
Albert Godfrind

12

글쎄, 삼중 따옴표는 docstring에서 여러 줄 주석으로 사용됩니다. 그리고 # 개의 주석은 인라인 주석으로 사용되며 사람들은이 주석을 사용합니다.

대부분의 스크립트 언어에는 여러 줄 주석이 없습니다. 그게 원인일까요?

참조 PEP 0008 , 섹션 댓글

파이썬 에디터가 블록 주석을위한 키보드 단축키를 제공하는지 확인하십시오. Emacs는 Eclipse뿐만 아니라 대부분의 괜찮은 IDE를 지원합니다.



5

개인적으로 Java의 의견 스타일은

/*
 * My multi-line comment in Java
 */

따라서 한 줄만 주석을 갖는 것은 스타일이 앞의 예제에 전형적인 경우 그렇게 나쁘지 않습니다.

#
# My multi-line comment in Python
#

VB.NET은 또한 한 줄짜리 주석이 달린 언어이며, 개인적으로 주석이 덜 좋아하는 주석을 찾고 더 많은 종류의 인용문을 찾는 것처럼 성가시다

'
' This is a VB.NET example
'

한 줄 전용 주석은 여러 줄 주석보다 문자 사용이 적고 정규 표현식 문에서 일부 문자가 빠져 나올 가능성이 적습니까? 그래도 Ned에 동의하는 경향이 있습니다.



4
# This
# is
# a 
# multi-line
# comment

이를 위해 편집기에서 주석 블록 또는 검색 및 바꾸기 (s / ^ / # / g)를 사용하십시오.


3

텍스트 편집기 (TextPad) 용 매크로를 다운로드하여 줄을 강조 표시 한 다음 각 줄의 첫 번째에 #을 삽입 하여이 문제를 해결했습니다. 유사한 매크로가 #를 제거합니다. 어떤 사람들은 여러 줄이 필요한 이유를 물을 수도 있지만 디버깅 목적으로 코드 블록을 "끄기"할 때 편리합니다.


1

파이썬에서 여러 줄 주석을 찾는 다른 사람에게는 트리플 따옴표 형식을 사용하면 어려운 방법을 배웠으므로 문제가 발생할 수 있습니다. 이걸 고려하세요:

this_dict = {
    'name': 'Bob',

"""
This is a multiline comment in the middle of a dictionary
"""

    'species': 'Cat'
}

여러 줄 주석이 다음 문자열에 들어가 'species'키를 엉망으로 만듭니다. #주석에 사용하는 것이 좋습니다 .


0

# 규약은 일반적인 규약이므로 # 기호 주석으로는 할 수없는 여러 줄 주석으로는 할 수있는 것이 없습니다. /* ... */PL / I로 돌아가는 의견 의 조상과 같은 역사적 사고입니다 .


0

그것들이 단지 불필요하다고 간주되었다고 가정하십시오. #a comment여러 줄 주석은 입력하기가 매우 쉽기 때문에 여러 줄 주석으로 구성 할 수 있습니다.

들어 HTML , 다른 한편으로는, multiliners 필요 더있다. 계속 입력하기가 더 어렵습니다 <!--comments like this-->.


4
이것은 요점이 아닙니다. 한 줄 주석과 여러 줄 주석에 대한 명확한 사용 사례가 있습니다. 나는 다른 언어로 광범위하게 사용했습니다 (파이썬 순수 주의자는 다른 언어에 신경 쓰지 않는다는 것을 알고 있습니다). ;)
johndodo

1
200 줄의 코드로이 작업을 수행하십시오. 꺼내고 다시 넣고 다시 꺼내야합니다. 초기 # 200을 입력하면 오래된 것이 더 빨라집니다.
DragonLord

0

이것은 단지 추측이다 .. 그러나

그것들은 문자열이기 때문에 의미 론적 가치가 있습니다 (컴파일러는 제거하지 않습니다). 따라서 docstring으로 사용하는 것이 좋습니다. 실제로는 AST의 일부가 되므로 문서 추출이 더 쉬워집니다.


0

게다가 여러 줄로 된 주석은 암캐 입니다. 유감스럽게도 언어에 관계없이 디버깅 목적 이외의 용도로는 사용하지 않습니다. 다음과 같은 코드가 있다고 가정 해보십시오.

void someFunction()
{
    Something
    /*Some comments*/
    Something else
}

그런 다음 코드에 디버거로 수정할 수없는 것이 있다는 것을 알기 때문에 여러 줄 주석으로 작은 코드 덩어리를 주석 처리하여 수동으로 디버깅을 시작합니다. 그런 다음 함수를 제공합니다.

void someFunction()
{ /*
    Something
   /* Comments */
   Something more*/
}

정말 짜증나.


3
어쨌든 파이썬에는 /*스타일 주석 이 없습니다 .
삼부작

17
파이썬에는 실제 여러 줄 주석이 없기 때문에 파이썬에서 예제를 제공하는 것이 어려웠습니다.
martiert

2
나는 개인적으로 문제를 이해하지 못한다. 여분의 * /를 삭제하십시오. 또는 // 정확해야하는 경우 한 줄을 주석 처리하려면 //를 사용하십시오.
Natalie Adams

4
중첩 된 주석을 허용하는 여러 언어가 있습니다 (어떤 이유로 든 작동 가능). rosettacode.org/wiki/Comments 에서 "nested"를 검색해보십시오 .
Keith

1
글쎄, 여러 줄 주석에 여러 줄 주석을 넣으면 짜증이납니다. 그리고 한 번에 약간의 프로그램 만 기억하지만 최소한 내가보고있는 프로그램의 어느 부분과 내가 언급 한 부분을 기억합니다. 그러나 당신이 그것을 기억하지 못한다면, 어떤 IDE는 주석을 기울임 꼴로 만든다는 사실을 사용할 수 있습니다. 어쨌든 그러한 작은 기능에는 분명히 한 줄 주석을 사용할 수도 있습니다. 그러나 많은 프로그램을 주석 처리하려면 실제로 여러 줄 주석이 필요합니다. 또는 해당 기능이있는 텍스트 편집기.
barlop

0

IDLE 을 사용하는 여러 줄 주석 :

  • 맥 OS X은 , 코드 선택 후와 코드 블록 주석 Ctrl+ 3와 주석을 사용하여 Ctrl+를 4.

  • Windows 는 코드를 선택한 후 Ctrl+ Alt+ 로 코드 블록을 3주석 처리하고 Ctrl+ At+를 사용하여 주석을 해제 4합니다.


-1

여러 줄 주석을 삼중 인용 변수에 넣을 한 사람에 대해 읽은 것을 기억합니다.

x = '''
This is my
super-long mega-comment.
Wow there are a lot of lines
going on here!
'''

이것은 약간의 메모리를 차지하지만 여러 줄 주석 기능을 제공하며 대부분의 편집기는 구문을 강조 표시합니다. :)

코드를 간단히 감싸서 코드를 주석 처리하는 것도 쉽습니다.

x = '''

'''

18
를 제거하면 x =메모리를 차지하지 않습니다.
endolith
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.