본문 바로가기
Python/Python FAQ

Python 일부 함수들은 왜 함수 이름 앞뒤에 언더스코어 "__"가 있는 걸까요?, Why do some functions have underscores "__" before and after the function name?

by 베타코드 2023. 9. 16.
반응형

질문


이 "밑줄"은 자주 발생하는 것 같은데, 이것은 파이썬 언어의 요구사항인지 아니면 단지 관습의 문제인지 궁금했습니다.

또한, 어떤 함수들이 밑줄을 가지고 있는지 그리고 왜 (__init__ 같은) 밑줄을 가지고 있는지 이름과 설명을 알려주실 수 있을까요?


답변


파이썬 PEP 8 -- 파이썬 코드 스타일 가이드에서 다음을 발췌:

기술적: 네이밍 스타일

다음과 같은 선행 또는 후행 밑줄을 사용한 특수 형식이 인식됩니다 (이러한 형식은 일반적으로 모든 케이스 규칙과 결합될 수 있음):

  • _single_leading_underscore: 약한 "내부 사용" 표시자입니다. 예를 들어 from M import *은 밑줄로 시작하는 객체를 가져오지 않습니다.

  • single_trailing_underscore_: 파이썬 키워드와 충돌을 피하기 위해 관례적으로 사용됩니다. 예:

    Tkinter.Toplevel(master, class_='ClassName')

  • __double_leading_underscore: 클래스 속성의 이름을 지정할 때 이름 맹글링을 호출합니다 (클래스 FooBar 내에서 __boo_FooBar__boo가 됨; 아래 참조).

  • __double_leading_and_trailing_underscore__: 사용자가 제어하는 네임스페이스에 존재하는 "매직" 객체 또는 속성입니다. 예: __init__, __import__ 또는 __file__. 이러한 이름을 발명하지 마세요; 문서화된 대로만 사용하세요.

이중 선행 및 후행 밑줄을 가진 이름은 사실상 파이썬 자체를 위해 예약되어 있습니다: "이러한 이름을 발명하지 마세요; 문서화된 대로만 사용하세요".

반응형

댓글