python naming
코딩이라는 것을 처음 배울때 naming을 왜 해야하지?
나는 남들과 다른 특별한 사람이니까 나만의 naming을 할꺼야! 하던 때가 있었는데
얼마 못가 개발자 선배님들께서 naming을 지키시는데는 다 이유가 있다는 것을 알게 되었습니다.
아는 만큼 보이고 도움이 되는 naming 규칙에 대해 PEP 8을 참고하여 정리하겠습니다.
1. 단일 변수로 헷갈리는 알파벳을 사용하지 말자
'l' 소문자 L , 'I' 대문자 i 는 특정 폰트에서 1과 구분이 되지 않으므로 사용하지 맙시다.
이와 같은 이유로 'O' 또한 0과 구분되지 않으므로 사용하지맙시다.
2. 모듈은 소문자로 된 짧은 이름
3. 클래스 이름은 PascalCase 를 따른다.
단어의 첫글자를 대문자로 한다(두 단어가 연결될때도 각 단어의 첫 글자를 대문자로 한다)
4. 예외 이름은 예외가 클래스이름이므로 PascalCase를 따르는데
대신 변수의 접미사로 Error가 붙어야한다 (예외는 에러이기때문)
5. 전역변수, 함수이름, 변수이름은 소문자를 사용한다.
단어사이 구분은 가독성을 위해 underscore( _ )를 이용한다.6. 메소드 및 함수의 인수규칙은
인스턴스 메소드의 첫번째 인수로는 항상 self를 사용합니다.
클래스 메소드의 첫번째 인수로는 항상 cls를 사용합니다.
ex) 클래스 메서드의 예시
def class_method(cls):
pass
위와 같이 작성해주면 Class.class_method()로 호출할 수 있다.
함수의 인수 규칙은 키워드가 충돌하는 경우 접미사로 underscore를 붙여주는 것으로 해결할 수 있다.
7. 상수는 모듈수준에서 정의되며 단어를 구분하는 밑줄을 포함하여 모두 대문자로 작성한다.
with 구문과 context manager
python code를 보다보면 with 를 마주칠때가 있다.
python 2.5부터 추가된 기능으로
with 구문이 실행됨에 있어서 내부적으로 __enter__와 __exit__가
반드시 실행되기때문에 효과적으로 코드를 작성할 수 있게 도와준다
이때 context manager는 with구문에 쓰일수 있는 객체의 타입이고,
이는 context manager protocol을 따른다
가장 쉽게 볼수 있는 예로 file handler가 context manager 프로토콜을 따르는데
with open('example.txt' , 'w' ) as f:
f.write("my text")
이렇게 작성을 해주면 with 구문이 동작하고 끝나는 시점에서 file close를 수행해주기 때문에 코드를 간편하게 작성해줄 수 있다.