파이썬에서 여러 줄 주석을 만드는 방법이 있습니까?


1156

최근 Python 공부를 시작 했지만 여러 줄 주석을 구현하는 방법을 찾을 수 없습니다. 대부분의 언어에는 다음과 같은 블록 주석 기호가 있습니다.

/*

*/

파이썬에서 이것을 시도했지만 오류가 발생하므로 아마도 올바른 방법이 아닙니다. 파이썬에는 실제로 여러 줄 주석 기능이 있습니까?


2
나는 통역 언어 인 것으로 생각합니다 .sh 또는 bash 또는 zsh의 경우와 마찬가지로 #주석을 만드는 유일한 방법입니다. 이런 식으로 파이썬 스크립트를 더 쉽게 해석 할 수 있다고 생각합니다.
— 빅터 자마 니안

1
나는이 대답이 오래되었다는 것을 알고 있지만 같은 질문이 있었기 때문에 그것을 보았습니다. 허용 된 답변은 효과가 있지만 (ADTC에 따라) 왜 정확하지 않은지에 대한 복잡한 점을 알기에는 파이썬을 충분히 알지 못합니다.
— Brandon Barney

5
@BrandonBarney 문제를 설명하겠습니다. ''를 사용하는 허용되는 대답은 실제로 아무것도하지 않는 여러 줄 문자열을 만듭니다. 기술적으로 이것은 주석이 아닙니다. 예를 들어 k = '' '가짜 설명, 실제 문자열' ''을 작성할 수 있습니다. 그런 다음 ADTC의 의미를 보려면 print (k)를 인쇄하십시오.
— pinyotae

3
그것은 이제 훨씬 더 의미가 있습니다. 사용하지 않는 문자열을 만들면 오류가 발생하는 vba에 익숙합니다. 나는 파이썬이 그것을 무시한다는 것을 깨닫지 못했습니다. 여전히 디버깅과 학습에는 효과가 있지만 실제 개발에는 좋지 않습니다.
— Brandon Barney

파이썬 소스 코드에서 긴 줄을 끊으면 편집기가 자동으로 들여 쓰기하여 깨진 줄이 실제로 이전 줄의 일부라는 것을 보여줍니다. 긴 pseudocode 줄을 끊으면 어떻게해야합니까?
— alpha_989

답변:


1802

삼중 인용 문자열을 사용할 수 있습니다. 그것들이 docstring이 아닌 경우 (클래스 / 함수 / 모듈의 첫 번째) 무시됩니다.

'''
This is a multiline
comment.
'''

( '''을 피하기 위해 행간을 적절히 들여 쓰십시오 IndentationError.)

귀도 반 로섬 (파이썬의 제작자) 은 이것을 "프로 팁"으로 트윗했습니다 .

그러나 파이썬의 스타일 가이드 PEP8 은 연속적인 한 줄 주석 사용을 선호하며 많은 프로젝트에서 찾을 수 있습니다. 텍스트 편집기에는 일반적으로이 작업을 쉽게 수행 할 수있는 바로 가기가 있습니다.


17
흠. 나는 파이썬 스크립트에 거대한 여러 줄 문자열을 넣었습니다 test.py. 내가 할 때 import test하는 test.pyc파일이 생성됩니다. 불행히도 pyc파일은 크기가 커서 전체 문자열을 일반 텍스트로 포함합니다. 내가 뭔가를 잘못 이해하고 있습니까, 아니면이 트윗이 틀렸습니까?
— unutbu

23
@unutbu, 파일에서 유일한 것이면, 그것은 docstring이었습니다. 앞에 코드를 넣으면에서 사라집니다 pyc. 답을 편집하고“모듈”을 docstring이있는 것들의 목록에 넣었습니다.
— Petr Viktorin

31
주석으로 여러 줄 문자열을 좋아하지 않습니다. 구문 강조는 주석이 아닌 문자열로 표시합니다. 입력하는 동안 영역 주석 처리 및 여러 줄 주석 래핑을 자동으로 처리하는 알맞은 편집기를 사용하고 싶습니다. 물론 맛의 문제입니다.
— Sven Marnach

61
컨벤션 """으로 docstrings 및 '''블록 주석 에 사용 하는 것이 도움이된다고 생각합니다 . 이러한 방식으로 '''일반적인 docstring을 충돌없이 감쌀 수 있습니다 .
— Roshambo

19
여러 줄 문자열을 여러 줄 주석으로 사용할 수 는 있지만 , 이러한 답변 중 문단을 구분하기 위해 빈 줄이있는 연속적인 한 줄 주석에서 여러 줄 주석을 구성하도록 권장 하는 PEP 8 하위 섹션 을 참조하는 것은 없습니다. #.
— Air

82

파이썬은 가지고 여러 문자열 / 주석 구문 문서화 문자열로 사용하지 않는 것을 의미에서를 여러 줄 문자열이 더 바이트 코드를 생성하지 것처럼 - #-prepended 의견. 실제로 주석처럼 작동합니다.

반면, 공식 문서에이 동작이 실제 주석 구문이되도록 문서화되어야한다고 말하면 언어 사양의 일부로 보장되지 않는다고 말할 수 있습니다.

어쨌든, 텍스트 편집기는 선택한 영역을 쉽게 주석 처리 할 수 ​​있어야합니다 ( #각 줄 앞에 개별적 으로 배치 ). 그렇지 않으면 텍스트 편집기로 전환하십시오.

특정 텍스트 편집 기능이없는 파이썬 프로그래밍은 힘든 경험이 될 수 있습니다. 올바른 편집기를 찾고 사용법을 알고 있으면 Python 프로그래밍 경험을 인식하는 방법에 큰 차이가 생길 수 있습니다.

텍스트 편집기는 선택된 영역을 주석 처리 할 수있을뿐만 아니라 코드 블록을 왼쪽과 오른쪽으로 쉽게 이동할 수 있어야하며을 누를 때 커서를 현재 들여 쓰기 수준으로 자동 배치해야합니다 Enter. 코드 접기도 유용 할 수 있습니다.


링크 붕괴를 방지하기 위해 Guido van Rossum의 트윗 내용은 다음과 같습니다.

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


3
삼중 인용 문자열 ( '``)은 실제로 여러 줄 주석을 수행하는 작업입니다.
— Varun Bhatia

감사합니다 .. ( '' ') 및 ( "" ")를 사용하여 블록을 주석 처리했지만 장고 응용 프로그램에는 도움이되지 않았습니다. 따라서 IDLE을 선택 하면 주석 처리 영역 및 주석 해제 영역 과 같은 옵션이 있습니다 (바로 가기 : Alt + 아래 3, Alt + 4 각각) 형식 . 메뉴가 지금은 그 어느 ..보다 쉽게
— Saurav 쿠마

IDE 사용도 고려해야합니다. 예, 무겁지만 올바르게 사용하면 코딩 시간을 크게 늘릴 수 있습니다. 나는 개인적으로 PyDev를 사용했고 이제는 PTVS (visual studio)를 사용합니다. PTVS를 추천합니다. 위의 기능들과 훨씬 더 많은 기능을 포함하고 있습니다. virtualenvs와의 직접적인 통합, 그리고 아주 좋은 디버깅입니다.
— Sbspider

2
@HappyLeapSecond "Python에는 진정한 여러 줄 주석 구문이 없지만 주석으로 사용할 수있는 여러 줄 문자열을 지원합니다."
— ADTC

3
내가 원하는 것은 테스트 할 때 전체 코드 블록을 주석 처리하는 쉬운 방법입니다. 다른 언어로도 쉽게 할 수 있습니다. 파이썬은 단지 고통입니다.
— Albert Godfrind

45

허용 된 답변에서 ...

삼중 인용 문자열을 사용할 수 있습니다. 그것들이 docstring이 아닌 경우 (클래스 / 함수 / 모듈에서 가장 먼저) 무시됩니다.

이것은 단순히 사실이 아닙니다. 주석과 달리 트리플 따옴표로 묶인 문자열은 여전히 ​​구문 분석되며 소스 코드에서 나타나는 위치에 관계없이 구문 상 유효해야합니다.

이 코드를 실행하려고하면 ...

def parse_token(token):
    """
    This function parses a token.
    TODO: write a decent docstring :-)
    """

    if token == '\\and':
        do_something()

    elif token == '\\or':
        do_something_else()

    elif token == '\\xor':
        '''
        Note that we still need to provide support for the deprecated
        token \xor. Hopefully we can drop support in libfoo 2.0.
        '''
        do_a_different_thing()

    else:
        raise ValueError

당신은 얻을 것이다 ...

ValueError: invalid \x escape

... Python 2.x 또는 ...

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 79-80: truncated \xXX escape

... 파이썬 3.x에서.

파서에 의해 무시되는 여러 줄 주석을 수행하는 유일한 방법은 ...

elif token == '\\xor':
    # Note that we still need to provide support for the deprecated
    # token \xor. Hopefully we can drop support in libfoo 2.0.
    do_a_different_thing()

그런 다음 r'raw string'- 를 사용할 수 있습니다 r'\xor' == '\\xor'.
— GingerPlusPlus

1
"참"여러 줄 주석도 구문 분석하고 구문 적으로 유효해야합니다. 예를 들어 C 스타일 주석은 */블록을 종료하므로 a 를 포함 할 수 없습니다 .

1
@ dan1111은 주석에 끝 마커를 포함 할 수 없다는 것이 분명하지만 이것이 유일한 제한입니다.
— el.pescado

14
'''"설명"에는 더 많은 제한이 있습니다. 주석은 표현의 일부만 주석 처리 할 수있는 반면 주석은 표현의 일부를 주석 처리 할 수 ​​있습니다. 예 : C에서 일부 목록 요소를 주석 처리 할 수 ​​있습니다 int a[] = {1, 2, /* 3, 4, */ 5};. 다중 줄 문자열을 사용하면 목록에 문자열을 넣을 수 있으므로 그렇게 할 수 없습니다.
— el.pescado

35

Python 2.7에서 여러 줄 주석은 다음과 같습니다.

"""
This is a
multilline comment
"""

수업에 참여하는 경우 올바르게 탭해야합니다.

예를 들면 다음과 같습니다.

class weather2():
   """
   def getStatus_code(self, url):
       world.url = url
       result = requests.get(url)
       return result.status_code
   """

20
삼중 따옴표는 아무것도하지 않는 텍스트를 삽입하는 방법입니다 (정상 작은 따옴표로 묶은 문자열 로이 작업을 수행 할 수 있다고 생각합니다). 아무것도하지 마십시오). 그렇기 때문에 트리플 인용 '댓글'의 들여 쓰기가 중요한 이유입니다.
— Demis

12
이 솔루션은 정확하지 않습니다. weather2주석은 클래스에서 첫 번째이므로 주석입니다.
— Ken Williams

@KenWilliams에 동의하십시오. 이것은 올바른 해결책이 아닙니다. 이것을 함수 / 클래스의 중간에 놓고 포맷 및 코드 폴딩 / 린팅 자동화 방법을 어지럽히는 방법을보십시오.
— alpha_989

25

AFAIK, Python에는 블록 주석이 없습니다. 개별 행에 주석을 달기 위해 #문자를 사용할 수 있습니다 .

당신이 사용하는 경우 메모장 ++ , 블록 주석에 대한 바로 가기가 있습니다 . gVim 및 Emacs 와 같은 다른 사람들 도 비슷한 기능을 가지고 있다고 확신 합니다.


2
이것은 올바르지 않습니다. 삼중 따옴표 사용에 대한 응답을 참조하십시오.
— 페르난도 곤잘레스 산체스

10
@ FernandoGonzalezSanchez : 그것은 실제로 정확하지 않습니다. 이 "주석으로 여러 줄 문자열"은 "프로 팁"으로 가장 잘 설명 할 수 있습니다. 공식 파이썬 문서는 이것에 대해 아무 말도하지 않으므로 OP에 의해 게시 된 질문입니다.
— Sanjay T. Sharma

8
그것은 docstrings에 대한 PEP입니다. 해당 페이지에 "댓글"에 대한 언급은 없습니다.
— Sanjay T. Sharma

12

여러 줄 문자열이 처리되지 않는다는 것을 제외하고는 그렇지 않습니다. 그러나 대부분의 Python IDE가 여러 줄의 코드를 '설명'할 수있는 단축키가 있습니다.


11

댓글을 달면

"""
long comment here
"""

스크립트 중간에 파이썬 / 리터는이를 인식하지 못합니다. 위의 주석이 표준 권장 사항의 일부가 아니므로 접기가 엉망이됩니다. 사용하는 것이 좋습니다

# Long comment
# here.

Vim 을 사용하는 경우 commentary.vim 과 같은 플러그인 을 눌러 긴 주석 행을 자동으로 주석 처리 할 수 있습니다 Vjgcc. 어디 Vj를 선택 두 줄의 코드, 그리고 gcc밖으로 의견을.

위와 같은 플러그인을 사용하지 않으려면 검색을 사용하고 다음과 같이 바꿀 수 있습니다

:.,.+1s/^/# /g

현재 행과 다음 행의 첫 문자가로 바뀝니다 #.


8

여러 줄 주석과 같은 기능은 없습니다. #한 줄의 코드에 주석을 달 수있는 유일한 방법입니다. 많은 사람들이 해결책으로 '' ''의견 ''이라고 대답했습니다.

작동하는 것처럼 보이지만 내부적 '''으로 파이썬에서는 행을 일반 문자열로 묶어서 인터프리터가 주석을 무시하는 것처럼 무시하지 않습니다 #.

공식 문서를 확인하십시오.


5

불행히도 stringization을 항상 주석 처리로 사용할 수는 없습니다 ! 따라서 각 행 앞에 표준을 붙이는 것이 더 안전합니다 #.

예를 들면 다음과 같습니다.

test1 = [1, 2, 3, 4,]       # test1 contains 4 integers

test2 = [1, 2, '''3, 4,'''] # test2 contains 2 integers **and the string** '3, 4,'

4

글쎄, 당신은 이것을 시도 할 수 있습니다 (인용을 실행할 때 첫 번째 질문에 대한 입력은로 인용해야합니다 ')

"""
print("What's your name? ")
myName = input()
print("It's nice to meet you " + myName)
print("Number of characters is ")
print(len(myName))
age = input("What's your age? ")
print("You will be " + str(int(age)+1) + " next year.")

"""
a = input()
print(a)
print(a*5)

사이에 동봉 된 """것은 주석 처리됩니다.

한 줄짜리 주석을 찾고 있다면 #입니다.


3

파이썬에서 여러 줄 주석 :

나를 위해 '' '와 "" "모두 작동했습니다.

예:

a = 10
b = 20
c = a+b
'''
print ('hello')
'''
print ('Addition is: ', a+b)

예:

a = 10
b = 20
c = a+b
"""
print('hello')
"""
print('Addition is: ', a+b)

3

파이썬에서 인라인 주석은 해시 문자로 시작합니다.

hello = "Hello!" # This is an inline comment
print(hello)

여보세요!

문자열 리터럴 내의 해시 문자는 해시 문자 일뿐입니다.

dial = "Dial #100 to make an emergency call."
print(dial)

긴급 전화를 걸려면 # 100을 다이얼하십시오.

단일 또는 여러 줄 주석에 해시 문자를 사용할 수도 있습니다.

hello = "Hello"
world = "World"
# First print hello
# And print world
print(hello)
print(world)

여보세요

세계

docstring을 지원하기 위해 텍스트를 세 개의 큰 따옴표로 묶으십시오.

def say_hello(name):
    """
    This is docstring comment and
    it's support multi line.
    :param name it's your name
    :type name str
    """
    return "Hello " + name + '!'


print(say_hello("John"))

안녕 존!

블록 주석을 위해 텍스트를 삼중 작은 따옴표로 묶습니다.

'''
I don't care the parameters and
docstrings here.
'''

2

Python 2.7.13에서 :

단일:

"A sample single line comment "

여러 줄 :

"""
A sample
multiline comment
on PyCharm
"""

2
작은 따옴표가 파이썬 2.7에서 주석을 작성한다고 말하고 있습니까?
— mcalex

3
작은 따옴표 세트를 사용하면 문자열이 생성됩니다. 한 줄 주석은 #으로 시작해야합니다.
— johanno


2

예, 둘 다 사용하는 것이 좋습니다 :

'''
Comments
'''

과

"""
Comments
"""

그러나 IDE에서 실행하는 동안 모두 기억해야 할 것은 여러 줄 코드로 받아들이 기 위해 전체 파일을 '실행'해야한다는 것입니다. 줄 단위로 'RUN'이 제대로 작동하지 않고 오류가 표시됩니다.


1

파이썬에서 여러 줄의 코드를 주석 처리하려면 #모든 줄에 한 줄 주석을 사용하십시오 .

# This is comment 1
# This is comment 2 
# This is comment 3

파이썬에서 "적절한"여러 줄 주석을 작성하려면 """구문에 여러 줄 문자열을 사용하는 것이 중요합니다. 파이썬에는 문서 문자열 (또는 문서 문자열) 기능이 있습니다. 프로그래머가 모든 Python 모듈, 함수, 클래스 및 메소드에 빠른 메모를 추가하는 쉬운 방법을 제공합니다.

'''
This is
multiline
comment
'''

또한 다음과 같은 클래스 객체로 docstring에 액세스 할 수 있다고 언급하십시오.

myobj.__doc__

이것이 이전 답변보다 무엇을 추가합니까?
— Peter Mortensen

내 답변에는 자세한 내용이 포함되어 있으며 개발자에게 더 도움이 될 수 있습니다.
— shafik

1

다음을 사용할 수 있습니다. 이것을 DockString이라고합니다.

def my_function(arg1):
    """
    Summary line.
    Extended description of function.
    Parameters:
    arg1 (int): Description of arg1
    Returns:
    int: Description of return value
    """
    return arg1

print my_function.__doc__

"DockString" ? 당신은 참조가 있습니까?
— Peter Mortensen

@PeterMortensen 여기에 datacamp.com/community/tutorials/docstrings-python을 방문 하십시오
— merin

1

"""여러 줄 주석 에 사용하지 않는 것이 좋습니다 !

다음은 예상치 못한 동작으로 간주 될 수있는 사항을 강조하는 간단한 예입니다.

print('{}\n{}'.format(
    'I am a string',
    """
    Some people consider me a
    multi-line comment, but
    """
    'clearly I am also a string'
    )
)

이제 출력을 살펴보십시오.

I am a string

    Some people consider me a
    multi-line comment, but
    clearly I am also a string

여러 줄 문자열은 주석으로 처리되지 않았지만 'clearly I'm also a string'단일 문자열을 구성하기 위해 연결되었습니다 .

PEP 8 지침 에 따라 여러 줄로 주석을 달려면 다음을 수행하십시오 .

print('{}\n{}'.format(
    'I am a string',
    # Some people consider me a
    # multi-line comment, but
    'clearly I am also a string'
    )
)

산출:

I am a string
clearly I am also a string

그것은 안 "이 lang-bash"대신 " bash" 구문 강조 하시나요? 어쨌든 실제로 매개 변수가있는 명령 행 명령 인 경우에도 일반적으로 이상하게 보입니다 (예 : "일부" ). lang-none(구문 강조 표시가 해제 됨)가 더 나은 선택 일 수 있습니다.
— Peter Mortensen

@PeterMortensen은 우리의 이상한 점을 지적 해 주셔서 감사합니다! "lang-none"으로 갔다.
— jojo

0

PyCharm IDE 사용

당신은 할 수 comment및 uncomment사용하여 코드의 라인 Ctrl 키 + /을. Ctrl + / 는 현재 줄 또는 선택된 여러 줄을 한 줄 주석으로 주석 처리하거나 주석 해제합니다 ({# in Django templates, or # in Python scripts). Pressing Ctrl+Shift+/Django 템플릿에서 선택된 소스 코드 블록에 대해 {% comment %} and {% endcomment %}태그로 블록을 둘러 쌉니다 .


n = 5
while n > 0:
    n -= 1
    if n == 2:
        break
    print(n)

print("Loop ended.")

모든 줄을 선택한 후 Ctrl + /


# n = 5
# while n > 0:
#     n -= 1
#     if n == 2:
#         break
#     print(n)

# print("Loop ended.")

0

여러 줄 주석은 실제로 파이썬에는 존재하지 않습니다. 아래 예제는 할당되지 않은 문자열로 구성되며 구문 오류에 대해 Python에서 유효성을 검사합니다.

Notepad ++ 와 같은 일부 텍스트 편집기 는 작성된 코드 나 단어를 주석 처리하는 바로 가기를 제공합니다.

def foo():
    "This is a doc string."
    # A single line comment
    """
       This
       is a multiline
       comment/String
    """
    """
    print "This is a sample foo function"
    print "This function has no arguments"
    """
    return True

또한 Ctrl+ K는 메모를 차단하는 메모장 ++의 바로 가기입니다. #선택 항목 아래의 모든 줄 앞에 추가합니다 . Ctrl+ Shift+ K는 주석 처리를 제거합니다.


0

다른 답변 중에서 가장 쉬운 방법은 Python 주석 지원을 사용하는 IDE 주석 기능을 사용하는 것입니다 #.

Anaconda Spyder를 사용하고 있으며 다음과 같습니다.

  • Ctrl+ 1-댓글 / 댓글
  • Ctrl+ 4-코드 블록 주석
  • Ctrl+ 5-코드 블록 주석 해제

단일 / 여러 줄의 코드를 주석 처리하거나 주석 처리를 제거합니다 #.

가장 쉬운 방법이라고 생각합니다.

예를 들어, 블록 주석 :

# =============================================================================
#     Sample Commented code in spyder
#  Hello, World!
# =============================================================================

편집 해 주셔서 감사합니다 @PeterMortensen :)
— aniltilanthe

-2

주석을 추가 할 행을 선택한 다음 Ctrl+ ?를 사용 하여 Sublime Text 편집기 에서 Python 코드를 주석 또는 주석 해제하십시오 .

한 줄에 Shift+ 를 사용할 수 있습니다 #.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.