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


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에는 블록 주석이 없습니다. 개별 행에 주석을 달기 위해 #문자를 사용할 수 있습니다 .

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


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 사용

당신은 할 수 commentuncomment사용하여 코드의 라인 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.