모듈을 쓰기 시작하면 관용구처럼 쓰게되는 if __name__ == \'__main__\': 부터 시작해서

상위호환 기능을 켜는 __future__ 모듈이라던가
클래스를 쓰기 시작하면 생성자 역할을 하는 __init__부터 시작해서
연산자 오버로딩의 역할을 하는 __add__, __sub__ 등등 본격적으로 쏟아져나오는 __의 물결

심지어 문자열이나 컬렉션의 길이를 구하는 것도 \"hello\".len()이 아니라 len(\"hello\")라고 쓰고 __len__을 구현하게 되어 있다.
뭐 일관된 인터페이스를 제공한다는 의미는 있는 것 같긴 한데 어쨌든 병맛은 병맛.



유일한 예외가 반복자에서 쓰는 ···.next() 메서드였는데 이것도 결국 파이썬 3.0에서 next(···)으로 바뀌더라.
뭔가 이상한 방향으로 일관성이 생기는 느낌.








프로그래밍 얘기: 파이썬 3.0에서 2.6으로 역 포팅하다가 nonlocal이 없어서 패닉