파이썬 코드를 읽다보면 파이썬엔 유독 언더바로 시작해서 언더바로 끝나는 함수들이 많다. private으로 설정된 특정 키워드라고 생각하고 코드를 읽어왔지만, 최근 언더바가 하나만 붙은 함수, 언더바가 앞에만 두개 붙은 함수 등을 보면서 언더바의 역할을 정리할 필요를 느꼈다.
단일 언더바로 표시된 함수 및 변수는 내부적으로만 사용해야한다고 개발자에게 알려주는 역할을 한다. 실제로는 _var를 통해 접근 가능하다. 참고로, from module import * 형태로 다른 파일에서 이 모듈을 업로드 할 때엔 _var형태의 변수, 함수, 클래스는 제외하고 로드된다. 하지만 import module, from module import _var를 통해 로드하면 접근 가능하다.
이중 언더바로 표시된 함수 및 변수는 Name Mangling을 발생시킨다. Name Mangling이 발생하면 그 함수 및 변수의 이름이 '클래스이름__변수'의 형태로 바뀐다. 그럼에도 외부에서 '클래스이름__변수'로 접근 가능하기에 자바에서의 Private을 완벽히 대체하지는 않는다.
파이썬에서 특별한 의미를 가지는 메소드들이다. init(생성자), del(소멸자), str(객체 문자열로 변환시 변환 규칙), repr(디버깅용 상세 정보), call(오브젝트를 함수처럼 호출할 시 수행할 동작 정의) add, sub, mul, eq, le 등등이 있다.
for _ in range(5):
...
반복문에서 를 사용함으로써 n번 반복하는 역할만 하는 것이고 현재 반복 횟수와 관련된 숫자는 중요하지 않다는 것을 미리 알려줄 수 있다. 를 출력하면 현재 반복문의 실행횟수에 따라 0~4의 값이 출력되기는 한다.
class_
type_
list_
...
키워드와 이름이 겹치는 것을 방지해야하지만 키워드만큼 변수를 잘 나타내는 단어가 없다면 이를 표시하기 위해 변수명 마지막에 언더바를 붙이기도 한다.