출처
파이썬 : 왜 함수 이름 앞과 뒤에 "__"를 가진 함수들이 있을까요?
이러한 "밑줄" 형태는 많이 보이는 거 같고 파이썬 언어의 요구사항인지 아니면 convention의 문제인지 궁금합니다.
또한, 누군가가 어떤 함수가 밑줄(_)을 가지는 경향이 있고 그 이유(예를 들어, __init__
)가 무엇인지 설명해주셨으면 합니다.
6 개의 답변 중 1개의 답변만 추려냄.
Python PEP 8로부터 -- 파이썬 코드의 스타일 가이드 (https://www.python.org/dev/peps/pep-0008/) :
the following special forms using leading or trailing underscores are recognized (these can generally be combined with any case convention):
앞이나 뒤에 밑줄표기(_)를 사용하는 다음 특별한 형태는 다음처럼 인식될 수 있습니다. (이들은 일반적으로 어떤 경우의 convention과 결합될 수 있습니다.)
_single_leading_underscore
: weak "internal use" indicator. E.g.from M import *
does not import objects whose name starts with an underscore.
_하나의_앞에있는_밑줄
: 약한 "내부적 사용"을 표시함. 예) "from M import *"은 밑줄로 시작하는 이름의 객체들을 가져오지(import) 않습니다.
single_trailing_underscore_
: used by convention to avoid conflicts with Python keyword, e.g.
하나의_뒤에있는_밑줄_
: 파이썬 키워드와 혼동을 막기 위해 사용하는 convention입니다. 예를들어Tkinter.Toplevel(master, class_='ClassName')
__double_leading_underscore
: when naming a class attribute, invokes name mangling (inside class FooBar,__boo
becomes_FooBar__boo
; see below).
__두개의_앞에있는_밑줄
: 클래스 속성에 이름을 붙일 때 속성의 이름을 내부적으로 바꿉니다. (내부적으로 바꾸는 규칙에 의해 Foobar 클래스 내부에 있는__boo
는_FooBar_boo
;가 됩니다.)
__double_leading_and_trailing_underscore__
: "magic" objects or attributes that live in user-controlled namespaces. E.g.__init__
,__import__
or__file__
. Never invent such names; only use them as documented.
__두개의_앞에있는_그리고_뒤에있는_밑줄__
: 사용자가 제어하는 이름공간에 "마법" 객체나 속성. 예시__init__
,__import__
또는__file__
. 이러한 이름을 새로 만들지 말아야 합니다. 오직 문서화된대로만 이들을 사용해야 합니다.)
두개의_앞에있는_그리고_뒤에있는_밑줄은 본질적으로 파이썬 자체적으로 예약되어 있습니다. "이러한 이름을 새로 만들지 말고 문서화된 대로만 그들을 사용해야 합니다."
'Python' 카테고리의 다른 글
Django Template의 나머지(%) 연산 (0) | 2016.02.27 |
---|---|
timeout과 함께 'subprocess' 모듈 사용하기 (0) | 2016.02.03 |
파이썬에서 switch 구문을 대체하여 사용하는 방법 (0) | 2015.12.21 |
n번째 문자마다 문자열을 나누는 방법? (0) | 2015.12.08 |
키로 dictionary를 어떻게 정렬할 수 있습니까? (0) | 2015.11.22 |